Haproxy+Keepalived构建高可用负载均衡集群
实验环境:
主机名 |
IP地址 |
VIP |
192.168.200.254 |
Haproxy-1 |
192.168.200.101 |
Haproxy-2 |
192.168.200.102 |
Nginx1 |
192.168.200.103 |
Nginx2 |
192.168.200.104 |
1、在Nginx1/2上编译安装nginx服务
1.1 首先安装Nginx1
[root@Nginx-1 ~] # yum -y install gcc gcc-c++ make pcre-devel zlib-devel [root@Nginx-1 ~] # useradd -M -s /sbin/nologin nginx [root@Nginx-1 ~] # tar xf nginx-1.6.2.tar.gz -C /usr/src [root@Nginx-1 ~] # cd /usr/src/nginx-1.6.2 [root@Nginx-1 nginx-1.6.2] # ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install [root@Nginx-1 nginx-1.6.2] # cd /usr/local/nginx/html/ [root@Nginx-1 html] # echo "server 192.168.200.103" > index.html [root@Nginx-1 html] # /usr/local/nginx/sbin/nginx [root@Nginx-1 html] # netstat -anpt |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4503 /nginx |
1.2 安装Nginx2, 同Nginx1搭建方式是一样的。
与Nginx1唯一不同的是:
[root@Nginx-2 html] # echo "server 192.168.200.104" > index.html |
2、安装Haproxy-1与Haproxy-2 两台机器配置一致:
[root@Haproxy-1 ~] # yum -y install gcc gcc-c++ make pcre-devel bzip2-devel [root@Haproxy-1 ~] # tar xf haproxy-1.4.24.tar.gz -C /usr/src/ [root@Haproxy-1 ~] # cd /usr/src/haproxy-1.4.24/ [root@Haproxy-1 haproxy-1.4.24] # make TARGET=linux26 && make install |
2.1 Haproxy服务器配置
建立haproxy的配置目录及文件
[root@Haproxy-1 haproxy-1.4.24] # mkdir /etc/haproxy [root@Haproxy-1 haproxy-1.4.24] # cp examples/haproxy.cfg /etc/haproxy/ |
2.2 haproxy配置项的介绍
haproxy的配置文件通常分为三部分: global(全局配置部分) defaults(默认配置部分) listen(应用组件部分)
[root@Haproxy-1 ~] # vim /etc/haproxy/haproxy.cfg # this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #chroot /usr/share/haproxy uid 99 gid 99 daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 #redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen web-cluster 0.0.0.0:80 option httpchk GET /index .html balance roundrobin server inst1 192.168.200.103:80 check inter 2000 fall 3 server inst2 192.168.200.104:80 check inter 2000 fall 3 |
2.3 创建自启动脚本
[root@Haproxy-1 ~] # cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy [root@Haproxy-1 ~] # ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy [root@Haproxy-1 ~] # chmod +x /etc/init.d/haproxy [root@Haproxy-1 ~] # /etc/init.d/haproxy start Starting haproxy: [确定] |
2.4 客户端访问测试:
用浏览器打开 http://192.168.200.101 打开一个新的浏览器再次访问 http://192.168.200.101
用浏览器打开 http://192.168.200.102 打开一个新的浏览器再次访问 http://192.168.200.102
可以验证两次访问到的结果分别为:
server 192.168.200.103
server 192.168.200.104
3、编译安装keepalived服务
[root@Haproxy-1 ~] # yum -y install kernel-devel openssl-devel popt-devel [root@Haproxy-1 ~] # tar xf keepalived-1.2.13.tar.gz [root@Haproxy-1 ~] # cd keepalived-1.2.13 [root@Haproxy-1 keepalived-1.2.13] # ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686 && make && make install |
3.1 配置keepalibed 开机启动脚本
[root@Haproxy-1 ~] # chkconfig --add keepalived [root@Haproxy-1 ~] # chkconfig keepalived on [root@Haproxy-1 ~] # chkconfig --list keepalived |
3.2.1 配置keepalibed 主配置文件
[root@Haproxy-1 ~] # vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived vrrp_script chk_http_port { script "/etc/keepalived/check_haproxy.sh" interval 2 global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_http_port } virtual_ipaddress { 192.168.200.254 } } } |
3.2.2 第二台Haproxy配置keepalibed 主配置文件
[root@Haproxy-2 ~] # cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived vrrp_script chk_http_port { script "/etc/keepalived/check_haproxy.sh" interval 2 weight 2 global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_http_port } virtual_ipaddress { 192.168.200.254 } } } |
4、两台机器上都配置haproxy检测脚本
[root@Haproxy-1 ~] # cat /etc/keepalived/check_haproxy.sh #!/bin/bash num=` ps -C haproxy --no-header | wc -l` if [ $num - eq 0 ] then /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy .cfg sleep 3 if [ ` ps -C haproxy --no-header | wc -l` - eq 0 ] then /etc/init .d /keepalived stop fi fi [root@Haproxy-1 ~] # chmod +x /etc/keepalived/check_haproxy.sh [root@Haproxy-1 ~] # service keepalived start [root@Haproxy-2 ~] # service keepalived start |
5.1、测试VIP地址
[root@Haproxy-1 ~] # ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link /ether 00:0c:29:cc:18:a2 brd ff:ff:ff:ff:ff:ff inet 192.168.200.101 /24 brd 192.168.200.255 scope global eth0 inet 192.168.200.254 /32 scope global eth0 inet6 fe80::20c:29ff:fecc:18a2 /64 scope link valid_lft forever preferred_lft forever [root@Haproxy-1 ~] # /etc/init.d/keepalived stop 停止 keepalived: [确定] [root@Haproxy-2 ~] # ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link /ether 00:0c:29:fd:8a:4e brd ff:ff:ff:ff:ff:ff inet 192.168.200.102 /24 brd 192.168.200.255 scope global eth0 inet 192.168.200.254 /32 scope global eth0 inet6 fe80::20c:29ff:fefd:8a4e /64 scope link valid_lft forever preferred_lft forever |
5.2、测试Haproxy健康检查
[root@Haproxy-1 ~] # service haproxy stop Shutting down haproxy: [确定] [root@Haproxy-1 ~] # service haproxy status haproxy (pid 59717) 正在运行... |
5.3 网页测试:
用浏览器打开 http://192.168.200.254
再次打开一个新的浏览器再次访问 http://192.168.200.254
可以验证两次访问到的结果分别为:
server 192.168.200.103
server 192.168.200.104
Haproxy+Keepalived构建高可用负载均衡集群的更多相关文章
- 基于Haproxy+Keepalived构建高可用负载均衡集群
实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...
- haproxy + keepalived 实现高可用负载均衡集群
1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf jdk-7u65-lin ...
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- LVS+Keepalived 实现高可用负载均衡集群
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- Keepalived+LVS高可用负载均衡集群
概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...
- HAProxy+Keepalived构建高可用负载均衡
http://www.linuxidc.com/Linux/2012-03/55880.htm web1 IP 192.168.0.47 web2 IP 192.168.0.48 haproxy_ma ...
- Nginx+Keepalived搭建高可用负载均衡集群
本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...
- RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...
随机推荐
- 并发编程实战之并发下的socket套接字编程
目录 一.python单线程下实现多个socket并发 1.1 服务端 1.2 客户端 一.python单线程下实现多个socket并发 1.1 服务端 import sys # import soc ...
- 大话设计模式Python实现-单例模式
单例模式(Singleton Pattern):保证类仅有一个实例,并提供一个访问它的全局访问点. 下面是单例模式的demo: #!/usr/bin/env python # -*- coding:u ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 7
18.6 PDO对预处理语句的支持 在生成网页时,许多PHP脚本通常都会执行除参数外其他部分完全相同的查询语句.针对这种重复执行一个查询,但每次迭代使用不同参数的情况,PDO提供了一种名为预处理语句 ...
- Java菜题
编程语言:Java 2019年全国高校计算机能力挑战赛分设大数据算法赛(所谓的内部试题) 一.选择题(共15题,每题3分,共45分) 1. 在Java中下列说法正确的是( ) A.一个子类可以有多 ...
- pytest框架之fixture前置和后置
一.conftest.py 定义公共的fixture,多个测试类中都可以调用 pytest提供了conftest.py文件,可以将fixture定义在此文件中 运行测试用例时,不需要去导入这个文件,会 ...
- error while loading shared libraries
https://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot-open-sh ...
- Mysql 5.7:更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
1.环境 在新服务器上重新安装了环境,原来是5.6的,就升级到了5.7版本. 2.问题 新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码. 输入 ...
- Java队列和定时器Timer
一: Queue详解 Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...
- 实例演示 C# 中 Dictionary<Key, Value> 的检索速度远远大于 hobbyList.Where(c => c.UserId == user.Id)
前言 我们知道,有时候在一些项目中,为了性能,往往会一次性加载很多条记录来进行循环处理(备注:而非列表呈现).比如:从数据库中加载 10000 个用户,并且每个用户包含了 20 个“爱好”,在 Wi ...
- [IDA]系统注释给改掉
IDA系统自动注释的,如果按 ';',则不会修改成功. 应该按 Shift + ; 这样才可以修改.