利用ansible书写playbook搭建HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境续

ansible、playbook、haproxy、keepalived、PXC

haproxy+keepalived双主模式调度pxc集群

HAProxy介绍

反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,

当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入

引入了frontend,backend;frontend根据任意 HTTP请求头内容做规则匹配,然后把请求定向到相关的backend.

Keepalived介绍

Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。

一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),

一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,

当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

一、环境准备:

proxy 192.168.1.241(外网IP:139.9.219.*) 跳板机(堡垒主机)、安装ansible、数据库客户端
pxc-0001 192.168.1.181 PXC数据库服务器角色
pxc-0002
192.168.1.182
PXC数据库服务器角色
pxc-0003 192.168.1.183 PXC数据库服务器角色
ha-0001 192.168.1.171 haproxy+keepalived
ha-0002 192.168.1.172 haproxy+keepalived

PXC集群搭建见随笔:https://www.cnblogs.com/jrjs/p/11764073.html

华为云云主机具体购买流程请浏览随笔:https://www.cnblogs.com/jrjs/p/11742221.html

在华为云购买台云主机ha-0001、ha-0002

添加俩个负载均衡器(elb-pxc1、elb-pxc2)

分别添加监听器、后端服务器组

添加监听器,让其监听3306端口。

添加后端服务器组,把ha-0001、ha-0002添加进来。采用加权轮询算法。

 

添加负载均衡器如下:

单击右上方购买增强型负载均衡

使用Xshell连接跳板机上配置ansible主机分组:

在跳板机上书写haproxy.cfg及keepalived.conf配置文件,通过playbook拷贝到俩台服务器上

haproxy.cfg配置文件如下:

 1 [root@proxy ~]# vim /etc/haproxy/haproxy.cfg
 2 global
 3  log 127.0.0.1 local2   ##[err warning info debug]
 4  chroot /usr/local/haproxy
 5  pidfile /var/run/haproxy.pid ##haproxy的pid存放路径
 6  maxconn 4000     ##最大连接数,默认4000
 7  user haproxy
 8  group haproxy
 9  daemon       ##创建1个进程进入deamon模式运行
10 defaults
11  mode tcp    ##默认的模式mode { tcp|http|health } 
12 option dontlognull  ##不记录健康检查的日志信息
13  option httpclose  ##每次请求完毕后主动关闭http通道
14  option httplog   ##日志类别http日志格式
15  option forwardfor  ##后端服务器可以从Http Header中获得客户端ip
16  option redispatch  ##serverid服务器挂掉后强制定向到其他健康服务器
17  timeout connect 10000 #如果backend没有指定,默认为10s
18  timeout client 300000 ##客户端连接超时
19  timeout server 300000 ##服务器连接超时
20  maxconn  3000  ##最大连接数
21  retries  3   ##3次连接失败就认为服务不可用,也可以通过后面设置
22   
23 listen stats 0.0.0.0:1080  #监听端口
24     stats refresh 30s        #统计页面自动刷新时间
25     stats uri /stats            #统计页面url
26     stats realm Haproxy Manager    #进入管理解面查看状态信息
27     stats auth admin:admin              #统计页面用户名和密码设置
28 
29 listen  pxcsrv-rewrite 0.0.0.0:3306
30    balance roundrobin
31    server pxc-0001 192.168.1.181:3306 check inter 2000 rise 2 fall 5
32    server pxc-0002 192.168.1.182:3306 check inter 2000 rise 2 fall 5
33    server pxc-0003 192.168.1.183:3306 check inter 2000 rise 2 fall 5

keepalived.conf配置文件如下:

 1 ! Configuration File for keepalived
 2 
 3 global_defs {
 4    notification_email {
 5    root@localhost                          //设置报警收件人邮箱
 6    vrrp_iptables  
 7 }
 8    notification_email_from Alexandre.Cassen@firewall.loc          //设置发件人
 9    smtp_server 192.168.200.1               //定义邮件服务器
10    smtp_connect_timeout 30
11    router_id LVS_DEVEL            //设置路由ID号
12 }
13 
14 vrrp_instance VI_1 {
15     state MASTER        //主服务器为MASTER(ha-0002备服务器需要修改为BACKUP)
16     interface eth0        //定义网络接口
17     virtual_router_id 51    //主备服务器VRID号必须一致
18     priority 100        //服务器优先级,优先级高优先获取VIP
19     advert_int 1
20     authentication {
21         auth_type PASS
22         auth_pass 123456    //主备服务器密码必须一致
23     }
24     virtual_ipaddress {        //谁是主服务器谁获得该VIP,当主服务器宕掉VIP自动飘到备服务器上
25         192.168.1.48/24 brd 192.168.1.255 dev eth0 label eth0:1
26     }
27 }
28 vrrp_instance VI_2 {
29     state BACKUP        //备服务器为BACKUP(ha-0001主服务器需要修改为MASTER)
30     interface eth0        //定义网络接口
31     virtual_router_id 52    //主备服务器VRID号必须一致
32     priority 99        //服务器优先级,优先级高优先获取VIP
33     advert_int 1
34     authentication {
35         auth_type PASS
36         auth_pass 654321    //主备服务器密码必须一致
37     }
38     virtual_ipaddress {        //谁是主服务器谁获得该VIP,当主服务器宕掉VIP自动飘到备服务器上
39         192.168.1.49/24 brd 192.168.1.255 dev eth0 label eth0:2
40     }
41 }

然后在跳板机书写playbook,playbook具体内容如下:

 1 ---
 2 #安装haproxy,keepalived相关软件包
 3 - hosts: ha+kp
 4   tasks:
 5     - name: installed haproxy,keepalived
 6       yum:
 7         name: haproxy,keepalived
 8         state: installed
 9 #在跳板机上编辑haproxy配置文件,拷贝到俩台服务器上
10     - name: copy haproxy
11       copy:
12         src: /root/haproxy.cfg
13         dest: /etc/haproxy/haproxy.cfg
14 #在跳板机上编辑keepalived配置文件,拷贝到俩台服务器上
15     - name: copy keepalived
16       copy:
17         src: /root/keepalived.conf
18         dest: /etc/keepalived/keepalived.conf
19 #修改keepalived.conf配置文件
20 - hosts: ha-0002
21   tasks:
22     - name: modify keepalived.conf
23       replace: 
24         path: "/etc/keepalived/keepalived.conf"
25         regexp: "MASTER"
26         replace: "linshi"
27     - replace: 
28         path: "/etc/keepalived/keepalived.conf"
29         regexp: "BACKUP"
30         replace: "MASTER"
31     - replace: 
32         path: "/etc/keepalived/keepalived.conf"
33         regexp: "linshi"
34         replace: "BACKUP"
35     - replace: 
36         path: "/etc/keepalived/keepalived.conf"
37         regexp: "100"
38         replace: "91"
39     - replace: 
40         path: "/etc/keepalived/keepalived.conf"
41         regexp: "99"
42         replace: "100"
43     - replace: 
44         path: "/etc/keepalived/keepalived.conf"
45         regexp: "91"
46         replace: "99"
47 #启动haproxy、keepalived服务
48 - hosts: ha+kp
49   tasks:
50     - name: start haproxy
51       service:
52         name: haproxy
53         enabled: yes
54         state: started
55     - name: start keepalived
56       service:
57         name: keepalived
58         enabled: yes
59         state: started

运行完成后在ha-0001查看haproxy服务是否启动:

查看ha-0001上的keepalived服务是否启动

运行完成后在ha-0002查看haproxy服务是否启动:

查看ha-0002上的keepalived服务是否启动

在ha-0001、ha-0002上使用ip a s命令,查看设置的vip48、49是否生效:

在跳板机访问ha-0001或者ha-0002的vip是否可以访问到:

到此haproxy+keepalived双主模式配置成功,成功的让俩台服务器同时工作,减轻单台调度器的压力,也实现了资源的合理利用。

 

posted @ 2019-10-30 16:35  旧人旧事  阅读(564)  评论(0编辑  收藏  举报