HAProxy1.6+keepalived部署方法

来源:互联网 发布:朱宏钧 知乎 年龄 编辑:程序博客网 时间:2024/06/04 18:06

目 录
1 环境 1
2 准备 1
3 安装(此步骤需同时在247,248机器执行)1
4 开启路由转发(此步骤需同时在247,248机器执行)3
5 设置虚拟IP(此步骤需同时在244,245机器执行)3
6 配置keepalived4
6.1 master 4
6.2 slave配置 5
7 haproxy的安装 7
8 创建配置文件和启动文件 7
9 配置HAProxy 7
10 启动HAProxy 9
11 配置关联HAProxy启动脚本9


 
1 环境
Centos:5.7   
HAProxy-Master:    10.1.1.247
HAProxy-Backup:    10.1.2.248
VIP:                10.1.1.240
RealServer1:    10.1.1.242
RealServer1:    10.1.1.1.243
 


2 准备
haproxy-1.6.6.tar.gz
keepalived-1.2.21.tar.gz
3 安装(此步骤需同时在247,248机器执行)
[root@localhost opt]# yum -y install  popt popt-devel libnl  libnl-devel popt-static libnfnetlink libnfnetlink-devel  openssl openssl-devel


 [root@localhost opt]# cd /data/software
[root@localhost software]# tar -zxvf keepalived-1.2.21.tar.gz


[root@localhost software]# cd keepalived-1.2.21


#安装地址不要乱改
[root@MGM1 keepalived-1.2.21]# ./configure --sysconf=/etc --prefix=/usr/local/keepalived


 
[root@MGM1 keepalived-1.2.21]# make && make install
 
4 开启路由转发(此步骤需同时在247,248机器执行)
[root@localhost keepalived-1.2.21]# cat /proc/sys/net/ipv4/ip_forward
1
[root@localhost keepalived-1.2.21]#  echo 1 > /proc/sys/net/ipv4/ip_forward
[root@CentOS-LVS_MASTER ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
5 设置虚拟IP(此步骤需同时在244,245机器执行)
首先查看一下现有网卡的IP地址,用root特权运行下面的命令
[root@localhost ~]# ip addr
 
从上面的详细信息中,可以看到服务器的网卡名是eno16777736,ip地址是10.1.1.245。
网卡的配置文件存储在 /etc/sysconfig/network-scripts/ 目录下。每个网卡的详细内容将会以不同的名字存储,比如ifcfg-eno16777736。




打开此配置文件,并且再添加一个IP地址
编辑文件 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736


像下面那样加入额外的IP地址。
IPADDR2=10.1.1.240
NETMASK2=255.255.255.0
 
重启网络服务来使更改生效。
[root@localhost ~]#systemctl restart network


6 配置keepalived
[root@localhost ~]# vim /etc/keepalived/keepalived.conf  #LVS的端口须与realserver端口一致
分别配置master和slave
6.1 master


global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                script "/data/program/keepalived/keepalived/check_haproxy.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state MASTER        ############ 辅机为 BACKUP
    interface eno16777736
    virtual_router_id 51
    mcast_src_ip 10.1.1.1.247
    priority 150                  ########### 权值要比 back 高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script { 
        chk_http_port ### 执行监控的服务 
        }
    virtual_ipaddress {
       10.1.1.240
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eno16777736
    virtual_router_id 52
    priority 99
    advert_int 1
    authentication {
         auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        10.1.1.240 
         }
}
 
6.2 slave配置
global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                script "/data/program/keepalived/keepalived/check_haproxy.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state  BACKUP        ############ 主机为 MASTER
    interface eno16777736
    virtual_router_id 51
    mcast_src_ip 10.1.1.248
    priority 99                  ########### 权值要比 master 低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script { 
        chk_http_port ### 执行监控的服务 
        }
    virtual_ipaddress {
       10.1.1.240
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface eno16777736
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
         auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        10.1.1.240 
         }
}
7 haproxy的安装
[root@MGM1 keepalived-1.2.21]# cd /data/software
[root@MGM1 software]# tar -zxvf haproxy-1.6.6.tar.gz
[root@NDB1 software]# cd haproxy-1.6.6
#查看版本看,此处为3.10
[root@MGM1 haproxy-1.6.6]# uname -a 
Linux MGM1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
#编译,标红处于上面的3.1版本需匹配
[root@MGM1 haproxy-1.6.6]# make TARGET=linux31 PREFIX=/data/program/haproxy
 
#安装
[root@MGM1 haproxy-1.6.6]# make install PREFIX=/data/program/haproxy
install -d "/data/program/haproxy/sbin"
install haproxy  "/data/program/haproxy/sbin"
install -d "/data/program/haproxy/share/man"/man1
install -m 644 doc/haproxy.1 "/data/program/haproxy/share/man"/man1
install -d "/data/program/haproxy/doc/haproxy"
for x in configuration management architecture cookie-options lua proxy-protocol linux-syn-cookies network-namespaces close-options intro; do \
        install -m 644 doc/$x.txt "/data/program/haproxy/doc/haproxy" ; \
8 创建配置文件和启动文件
[root@MGM1 sbin]# cd /data/software/haproxy-1.6.6/
[root@MGM1 haproxy-1.6.6]# cp examples/haproxy.init /etc/init.d/haproxy
[root@MGM1 haproxy-1.6.6]# chmod +x /etc/init.d/haproxy
[root@MGM1 haproxy-1.6.6]# ln -s /usr/local/sbin/haproxy /usr/sbin/
9 配置HAProxy
[root@MGM1 haproxy-1.6.6]# cd /data/program/haproxy
[root@MGM1 haproxy]# mkdir conf  logs
[root@MGM1 conf]# cd conf
[root@MGM1 conf]# vi haproxy.cfg
#将以下内容拷贝到该文件中去


global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096
    chroot /data/program/haproxy/
    uid 0
    gid 0
    daemon
    #debug
    #quiet


defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
    option   redispatch
    option  abortonclose
    retries 3
    maxconn 2000


    contimeout  5000
    clitimeout  50000
    srvtimeout  50000
    timeout check 5s
    stats refresh 30s
    stats uri  /stats
    stats realm baison-test-Haproxy
    stats auth admin:admin123
    stats hide-version
frontend www
    bind *:80
    acl web hdr(host) -i 10.1.1.240
    use_backend webserver if web


backend webserver
    mode http
    balance   roundrobin
    option  httpchk /index.html
    server     web01 10.1.1.242:8081  check inter 2000 fall 3 weight 30
    server     web01 10.1.1.243:8081  check inter 2000 fall 3 weight 20


10 配置关联HAProxy启动脚本
[root@MGM1 keepalived-1.2.21]# vi /data/program/keepalived/keepalived/check_haproxy.sh
#将以下内容拷贝到文件 中
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
     /data/program/haproxy/sbin/haproxy -f /data/program/haproxy/conf/haproxy.cfg
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
       /etc/init.d/keepalived stop
fi


11 启动HAProxy
#启动
[root@MGM1 haproxy-1.6.6]# /data/program/haproxy/sbin/haproxy -f /data/program/haproxy/conf/haproxy.cfg
#重启
[root@MGM1 haproxy-1.6.6]#/data/program/haproxy/sbin/haproxy -f /data/program/haproxy/conf/haproxy.cfg -st
#访问http://10.1.1.247/stats,用户名和密码为上述配置文件所设,为admin/admin123
 




12 将keepalived做成启动服务,方便管理(此步骤需同时在247,248机器执行)
[root@localhost ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@localhost keepalived-1.2.21]# /etc/init.d/keepalived start  //启动LVS服务
[root@localhost keepalived-1.2.21]# /etc/init.d/keepalived stop   //停止LVS服务


13 启动两台realserver
http://10.1.1.242:8081/
 
http://10.1.1.243:8081/
 


通过VIP访问,http:10.1.1.240
通过不断刷新,可以明显看到在242/243之间切换
 


 
同时我们也可以看到HAProxy 关于这两台realserver的状态,目前都是正常启动的
 



0 0
原创粉丝点击