LVS+Keepalived高可用群集(无论头上是怎样的天空,我准备着承受任何风暴)(二)

简介: LVS+Keepalived高可用群集(无论头上是怎样的天空,我准备着承受任何风暴)(二)

二、LVS+Keepalived群集部署


实验拓扑



主DR服务器:7-4 192.168.109.134


备DR服务器:7-5 192.168.109.135


web1:7-2 192.168.109.132


web2:7-3 192.168.109.133


客户端:w7 192.168.109.200


#每台机子关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.1 配置负载均衡器(主备相同)

主DR服务器:7-4 192.168.109.134


备DR服务器:7-5 192.168.109.135


1.下载相应的软件包

yum install -y ipvsadm keepalived

2.修改keepalived配置文件

#找到配置文件位置
[root@localhost ~]# rpm -qc keepalived 
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf
#备份配置文件
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak 
[root@localhost keepalived]# ls
keepalived.conf  keepalived.conf.bak
#修改配置文件
[root@localhost keepalived]# vim  keepalived.conf 
  ! Configuration File for keepalived
  #全局配置
  global_defs {
     notification_email {
       acassen@firewall.loc
       failover@firewall.loc
       sysadmin@firewall.loc
     }
     notification_email_from Alexandre.Cassen@firewall.loc
     smtp_server 127.0.0.1  #将邮箱地址改为本地
     smtp_connect_timeout 30
     router_id LVS_01    #设置名称,便于区分
     #vrrp_skip_check_adv_addr  #将四行vrrp的配置删掉 
     #vrrp_strict
     #vrrp_garp_interval 0
     #vrrp_gna_interval 0
  }
  vrrp_instance VI_1 {
    state MASTER   #主备服务器的名称,但真正区分主备是用优先级区分
    interface ens33    #改为ens33,跟自己的机子对应
    virtual_router_id 51   #主备保持一致,默认51
    nopreempt #添加这行,意味着非抢占模式,抢占模式下宕机后恢复的主服务器会将备服务器挤掉继续自己执行,
    #来回切换会造成脑裂,出现网络波动现象
    priority 100   #优先级越大就是主
    advert_int 1  #报文间隔时间
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.109.188 
    }
}
    #配置虚拟服务器实例
#virtual_server 192.168.200.100 443 {
#指定虚拟IP和端口号,443是https协议,80是http协议
virtual_server  192.168.109.188 80 { 
    delay_loop 6   #健康检查的时间,检查节点服务器
    lb_algo rr  #调度算法,默认轮询算法
    lb_kind DR  #LVS工作模式,默认是NAT,我们实验用DR
    persistence_timeout 0   #长连接,默认50s,不想这么长改成0
    protocol TCP  #健康检查的协议
#配置真实服务器
    real_server 192.168.109.132 80 {
        weight 1  #权重,采用加权轮询算法时要改
       # SSL_GET {  #健检查的方式,默认SSL_GET ,我们采用TCP_CHECK
            #url {
             # path /
             # digest ff20ad2481f97b1754ef3e12ecd3a9cc
           # }
           # url {
            #  path /mrtg/
             # digest 9b3a0c85a887a256d6939da88aabd8cd
           # }
         TCP_CHECK{
            connect_port  80#指定端口号
            connect_timeout 3 #超时时间
            nb_get_retry 3  #重试次数
            delay_before_retry 3  #间隔时间
         }
    }
    #再添加一台真实服务器配置
    real_server 192.168.109.133 80 {
        weight 1
        TCP_CHECK {
            connect_port  80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }   
}
#下面其余的内容全部删掉
#保存后重启
[root@localhost keepalived]# systemctl restart keepalived.service
#传给备服务器
[root@localhost keepalived]# scp keepalived.conf 192.168.109.135:`pwd`
#开启ipvsadm工具(两台一样)
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.109.188:80 rr
  -> 192.168.109.132:80           Route   1      0          0         
  -> 192.168.109.133:80           Route   1      0          0

主要改的地方:


邮箱地址


router_id


状态:主MASTER 备BACKUP


网卡名称





keepalived是通过ip命令生成VIP,使用ip命令查看







3.调整 proc 响应参数

#调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
......
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
......
sysctl -p


2.2 http服务器配置

web服务器1centos7-2 192.168.109.132


web服务器2centos7-3 192.168.109.133

#下载http服务并开启
yum install -y httpd
systemctl start httpd
systemctl enable httpd
#web1加入这行网页内容
echo "<h1>web1</h1>" > /var/www/html/index.html
#web2加入这行网页内容
echo "<h1>web2</h1>" > /var/www/html/index.html

(1)配置虚拟IP地址(VIP:192.168.109.188)

#此地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口1o:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱。

[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.109.188
NETMASK=255.255.255.255  #注意:子网掩码必须全为1
[root@web1 network-scripts]# ifup lo:0   #开启虚拟网卡
[root@web1 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.109.188  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
#临时添加路由
[root@web1 network-scripts]# route add -host 192.168.109.188 dev lo:0
#-host 添加一个主机
#-net添加一个网段
#dev代表出站网卡
[root@web1 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.109.2   0.0.0.0         UG    100    0        0 ens33
192.168.109.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.109.188 0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
#开机自动加入路由
[root@web1 network-scripts]# vim /etc/rc.local
[root@web1 network-scripts]# cat /etc/rc.local |grep route
/sbin/route add -host 192.168.109.188 dev lo:0
[root@web1 network-scripts]# chmod +x /etc/rc.d/rc.local



(2)调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突

vim /etc/sysctl.conf 
......
net.ipv4.conf.lo.arp_ignore=1   #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce=2  #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
......
sysctl -p

2.3 客户端测试









总结


Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。


在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个浮动IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管浮动IP,继续提供服务,从而保证了高可用性。

目录
相关文章
|
5月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
185 0
|
2天前
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
4月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
98 2
|
4月前
|
负载均衡 网络协议 Linux
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
77 0
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
185 1
|
6月前
|
负载均衡 应用服务中间件 nginx
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
41 0
|
7月前
|
负载均衡 监控 Linux
LVS + keepalived
LVS + keepalived
65 1
|
7月前
|
存储 负载均衡 网络协议
LVS负载均衡群集—DR直接路由
LVS负载均衡群集—DR直接路由
66 0
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
|
6月前
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
110 0