Linux云计算架构-使用keepalived+LVS+DR部署高可用集群

Linux云计算架构-使用keepalived+LVS+DR部署高可用集群

1. keepalived+LVS+DR架构图

在这里插入图片描述
在这里插入图片描述
在博主的其他博客有说到如何配置主备LVS,这里不多介绍。

2. 配置RS后端真实服务器

使用脚本配置rs1:

[root@rs1 ~]# vim /etc/init.d/lvsrsdr
#!/bin/bash
#description:start relserver
VIP=192.168.10.30
source /etc/init.d/functions #加载环境变量(可以加载所有的环境变量)
case $1 in
start)
 echo 'start LVS of Realserver DR'
 /sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
 /sbin/route add -host $VIP dev lo:1
 echo '1' > /proc/sys/net/ipv4/conf/lo/arp_ignore
 echo '2' > /proc/sys/net/ipv4/conf/lo/arp_announce
 echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore
 echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce
 ;;
stop)
 /sbin/ifconfig lo:1 down
 echo 'Close LVS of Realserver DR'
 echo '0' > /proc/sys/net/ipv4/conf/lo/arp_ignore
 echo '0' > /proc/sys/net/ipv4/conf/lo/arp_announce
 echo '0' > /proc/sys/net/ipv4/conf/all/arp_ignore
 echo '0' > /proc/sys/net/ipv4/conf/all/arp_announce
 ;;
*)
 echo "Usage:$0 (start|stop)"
exit 1
esac
# 用脚本配置RS1
[root@rs1 ~]# chmod +x /etc/init.d/lvsrsdr
[root@rs1 ~]# /etc/init.d/lvsrsdr start
Reloading systemd:                                         [  确定  ]
Starting lvsrsdr (via systemctl):                          [  确定  ]
[root@rs1 ~]# echo "/etc/init.d/lvsrsdr start" >> /etc/rc.local

[root@rs1 ~]# ifconfig -a
lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.10.30  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

# 在RS1上配置httpd服务,并开通防火墙的80端口号,httpd服务重启并添加到开机自启
[root@rs1 ~]# yum install httpd -y
[root@rs1 ~]# echo 192.168.10.40 > /var/www/html/index.html
[root@rs1 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@rs1 ~]# firewall-cmd --reload
success
[root@rs1 ~]# systemctl restart httpd
[root@rs1 ~]# systemctl enable httpd

# 如果重启不来,一般是ServerName没有修改。
[root@rs1 ~]# vim /etc/httpd/conf/httpd.conf 
 95 ServerName localhost:80

# 用curl命令看下能否获取到网页,可以看到是没问题的。
[root@rs1 ~]# curl 192.168.10.40
192.168.10.40

# 用同样的方法配置RS2
为了看到负载均衡的效果,测试页的内容稍微调整下:
[root@rs2 ~]# echo 192.168.10.50 > /var/www/html/index.html
[root@rs2 ~]# curl 192.168.10.50
192.168.10.50

3. keepalived+LVS+DR负载均衡高可用集群测试

这里配置一台客户端,IP地址为192.168.10.60。能访问VIP的前提是能ping通。
在这里插入图片描述

3.1 测试负载均衡

# 安装检测工具
[root@client ~]# yum install elinks -y

# 如果在keepalived的配置文件中,设置了以下参数,可能会无法看到以下效果。
# 该参数的作用是同一IP访问VIP时,会保持长连接50s,即50s后才会切换。
# 要想立刻看到效果的,可以删除改行。
persistence_timeout 50 

在这里插入图片描述
在这里插入图片描述

3.2 测试高可用

# 停止主LVS的keepalived服务模拟故障
[root@mlvs1 ~]# systemctl stop keepalived.service

# VIP已经进行漂移
[root@mlvs2 ~]# ip a | grep ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.10.20/24 brd 192.168.10.255 scope global noprefixroute ens32
    inet 192.168.10.30/32 scope global ens32

# 还是可以访问VIP
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40

[root@mlvs2 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.10.30:80                    8       48        0     3736        0
  -> 192.168.10.40:80                    4       24        0     1868        0
  -> 192.168.10.50:80                    4       24        0     1868        0

3.3 测试主LVS故障恢复

# 重新启动主LVS上的keepalived服务
[root@mlvs1 ~]# systemctl start keepalived.service

# 可以看到VIP已经迁移回来了
[root@mlvs1 ~]# ip a | grep ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.10.10/24 brd 192.168.10.255 scope global noprefixroute ens32
    inet 192.168.10.30/32 scope global ens32

# VIP还是可以继续访问
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.50
[root@client ~]# elinks 192.168.10.30 --dump
   192.168.10.40

[root@mlvs1 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.10.30:80                    6       36        0     2802        0
  -> 192.168.10.40:80                    3       18        0     1401        0
  -> 192.168.10.50:80                    3       18        0     1401        0

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/109231844