开始
中间换成2台 HAProxy。连一个叫做VIP的IP。中间负载均衡不止应了HaProxy 还是用了Keepaived。Keepaived使用一个VIP的协议在路由器或者网管上申请一个虚拟的IP,将这个虚拟的ip绑定在虚拟机上。或者绑定在服务器上。
如果左边的宕机了 会有健康检查,
会把vip绑定在另外一台服务器上。
实战
启动138 一台新的服务器,这台也实现了HAProxy的配置。
安装keepalived
配置
打开是默认的模板,直接全删。
使用小d 大G命令。全部删除
写好的模板直接复制过来
首先是全局的变量。
router_id 就是本机的id 它叫做mq04 。其他选项用默认的。
vrrp检测使用的脚本。使用chk_haproxy脚本。脚本放在了/etc/keepalived/haproxy_check.sh。每隔两秒 就会跑这个脚本。如果脚本返回有问题就会把权重减20,
配置我们需要绑定的vip和本机的ip
state master:表示本机在启动的时候是主
interface ens33 :它的网卡叫做ens33。网课的名字可以用ip+空格+a 命令就可以拿到。
virtual_router_id 51:表示虚拟路由的id,默认是51 ,不要用默认的,我们可以起个名字,
例如我们起名叫做29,是个数字就可以。
mcast_src_ip :这是本机的ip。
priority 100 :启动的时候默认的优先级是100
两台HAProxy之间通信使用的用户名和密码。
virtual_ipaddress :这是提供给客户端的虚拟ip。当其中一个HAProxy宕机的时候,这个虚拟ip会转移给另外一个HAProxy
健康检查的脚本名称
健康检查的脚本,对应的是上面这个。它会找里面具体的地址去执行。
编写健康监察的脚本
编辑好的代码直接贴过来
ps是列出系统当前所有的进程,-C是检查,查找个数,查找一下我们本机有没有haproxy在运行,看它有几个,
如果输出是0换个,那么就启动haproxy,把我们本机的haproxy再救起来。
2秒后,看有没有救起来,如果没有就把自己给杀掉。对方的keeplied就会感知到我们这个keeplied被杀掉了。就会把VIP绑定在自己的节点上,这样就实现了双击热备。
这样我们137的这个节点就配置好了
138服务器的配置
按照上面的步骤一样的操作。
不同的地方:
这里的state是BACKUP
虚拟router_id也写29
健康检查脚本
查看脚本是否有被执行的权限。chomd +x:给正脚本增加可执行的权限。
master主机上也执行这个脚本
启动keeplived
备机也启动
验证keeplived是否在正常的工作。这个网卡本来绑定了一个ip叫做57.137 这是它的固有ip
用命令ip+空格+a
下面还有一个ip。57.238就是我们刚才在配置文件里面配置的虚拟的ip。这个时候让我们的客户端连接238这个ip、连接238就相当于连接到了这太HAProxy上,HAproxy就会把负载请求分发到3太RabbitMQ集群节点上,
如果异常的情况,例如HAproxy挂了或者是Keeplived挂了。Keeplived就会尝试去重启HAProxy,这是在我们健康检查的脚本里面写的逻辑。如果启动没起来。那么它会把自己傻吊。如果它自己本来就挂了。
模拟主机的keeplived宕机
在主机上关闭
然后在备机上
备机只绑定了一个ip
把主机的keeplived 停掉。
然后跑到备份机上。绑定了一个新的IP叫做 57.238
那么我们的客户端连接的就是备份机,热备机就会启动一个新的负载均衡的作用。热备机就将请求转发给我们集群的3个节点。
这个就是HAProxy+keeplied双击热备的实现原理。