我是靠谱客的博主 贤惠乐曲,最近开发中收集的这篇文章主要介绍数据库负载均衡(下)虚拟IP地址利用Keepalived实现双机热备Нaproxy双机热备方案Haproxy容器内安装Keepalived,设置虚拟IP实现外网访问虚拟IP,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 为什么要采用双机热备

单节点Haproxy不具备高可用,必须要有冗余设计

双机就是两个请求处理程序,比如两个haproxy,当一个挂掉的时候,另外 一个可以顶上。

  • 虚拟IP地址

linux系统可以在一个网卡中定义多个IP地址,把这些地址分配给多个应用程序,这些地址就是虚拟IP,Haproxy的双机热备方案最关键的技术就是虚拟IP。

  • 利用Keepalived实现双机热备

定义虚拟IP

在Docker中启动两个Haproxy容器,每个容器中还需要安装Keepalived程序

两个Keepalived会争抢虚拟IP,一个抢到后,另一个没抢到就会等待,抢到的作为主服务器,没抢到的作为备用服务器

两个Keepalived之间会进行心跳检测,如果备用服务器没有受到主服务器的心跳响应,说明主服务器发生故障,那么备用服务器就可以争抢虚拟IP,继续工作

我们向虚拟IP发送数据库请求,一个Haproxy挂掉,可以有另一个接替工作

  • Нaproxy双机热备方案

Docker中创建两个Haproxy,并通过Keepalived抢占Docker内地虚拟IP

Docker内的虚拟IP不能被外网,所以需要借助宿主机Keepalived映射成外网可以访问地虚拟IP

  • Haproxy容器内安装Keepalived,设置虚拟IP

Keepalived必须要安装在Haproxy所在容器之内

1.进入h1容器,安装Keepalived

docker exec -it h1 bash
apt-get update
apt-get install keepalived

apt-get下载慢,修改Ubuntu的apt-get源为国内镜像源

2.编辑Keepalived配置文件
Keepalived的配置文件是/etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

配置文件内容如下:

vrrp_instance  VI_1 {
    state  MASTER # Keepalived的身份(MASTER主服务要抢占IP,BACKUP备服务器不会抢占IP)。
    interface  eth0 # docker网卡设备,虚拟IP所在
    virtual_router_id  51 # 虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。从0~255
    priority  100 # MASTER权重要高于BACKUP数字越大优先级越高
    advert_int  1 # MASTER和BACKUP节点同步检查的时间间隔,单位为秒,主备之间必须一致
    authentication { # 主从服务器验证方式。主备必须使用相同的密码才能正常通信
        auth_type  PASS
        auth_pass  123456
    }
    virtual_ipaddress { # 虚拟IP。可以设置多个虚拟IP地址,每行一个
        172.18.0.201
    }
}

3.启动Keepalived

service keepalived start

4.宿主机执行ping命令

ping 172.18.0.201

5.进入h2容器,安装Keepalived

docker exec -it h2 bash
apt-get update
apt-get install keepalived

6.编辑Keepalived配置文件

vim /etc/keepalived/keepalived.conf

配置文件内容如下:

 vrrp_instance  VI_1 {
    state  MASTER
    interface  eth0
    virtual_router_id  51
    priority  100
    advert_int  1
    authentication {
        auth_type  PASS
        auth_pass  123456
    }
    virtual_ipaddress {
        172.18.0.201
    }
}

7.启动Keepalived

service keepalived start

8.宿主机执行ping命令

ping 172.18.0.201
  • 实现外网访问虚拟IP

1.宿主机执行安装Keepalived

yum -y install keepalived

2.编辑Keepalived配置文件

vi /etc/keepalived/keepalived.conf

配置文件内容如下:

 vrrp_instance VI_1 {
    state MASTER
    #这里是宿主机的网卡,可以通过ip a查看当前自己电脑上用的网卡名是哪个
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        #这里是指定的一个宿主机上的虚拟ip,一定要和宿主机网卡在同一个网段,
        192.168.123.150
    }
}
​
#接受监听数据来源的端口,网页入口使用
virtual_server 192.168.123.150 8888 {
    delay_loop 3
    lb_algo rr 
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
​    #把接受到的数据转发给docker服务的网段及端口,由于是发给docker服务,所以和docker服务数据要一致
    real_server 172.18.0.201 8888 {
        weight 1
    }
}
​
#接受数据库数据端口,宿主机数据库端口是3306,所以这里也要和宿主机数据接受端口一致
virtual_server 192.168.123.150 3306 {
    delay_loop 3
    lb_algo rr 
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
​    #同理转发数据库给服务的端口和ip要求和docker服务中的数据一致
    real_server 172.18.0.201 3306 {
        weight 1
    }
}

3.启动Keepalived

service keepalived start

 

最后

以上就是贤惠乐曲为你收集整理的数据库负载均衡(下)虚拟IP地址利用Keepalived实现双机热备Нaproxy双机热备方案Haproxy容器内安装Keepalived,设置虚拟IP实现外网访问虚拟IP的全部内容,希望文章能够帮你解决数据库负载均衡(下)虚拟IP地址利用Keepalived实现双机热备Нaproxy双机热备方案Haproxy容器内安装Keepalived,设置虚拟IP实现外网访问虚拟IP所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部