Lvs+keepalived配置过程(一主一备高可用)

Keepalived工作原理

keepalived是以VRRP协议为基础实现的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议 

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级选举一个backup当master。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

实验过程如下:

  1. 五台虚拟机:客户机*1,LVS Director节点(master)*1,备份Director节点(Backup)*1,web服务器*2
  2. 基础配置:配置本地yum源,关闭防火墙等
  3. 下载配置       客户机:httpd,net-tools

                                master和backup:keepalived,ipvsadm

     4.配置IP地址(不需要网关)

客户机:110.110.110.1

Master:110.110.110.5

Backup:110.110.110.6

Web1:110.110.110.254

(需添加lo:0网卡,配置IP为VIP地址,即配置虚拟IP地址)

Web2:110.110.110.253

(需添加lo:0网卡,配置IP为VIP地址,即配置虚拟IP地址)

5.调整web节点配置(两台配置相同)

  • 调整ARP参数

Vim /etc/sysctl.conf

写入:

net.ipv4.conf.all.arp_ignore=1

net.ipv4.conf.all.arp_announce=2

net.ipv4.conf.default.arp_ignore=1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce=2

Sysctl -p 是内核参数生效

  • 配置虚拟ip地址

Cd /etc/sysconfig/network-scripts/

Cp ifcfg-lo ifcfg-lo:0

Vim ifcfg-lo:0

写入:

DEVICE=lo:0

IPADDR=110.110.110.10 #虚拟IP地址,可按照具体情况更改

NETMASK=255.255.255.255

ONBOOT=yes

NAME=loopback:0
  • 添加回环路由
Route add -host 110.110.110.10/32 dev lo:0  #添加的为虚拟VIP地址

Route -n 查看一下是否已经添加上

#若无法使用route命令,可以使用yum -y install net-tools,该软件包含各种网络工具

  • web1:echo "this is the web1 " >/var/www/html/index.html
    
    web2:echo "this is the web2 " >/var/www/html/index.html

# /var/www/html/index.html 在Web服务器配置中,当用户访问网站的域名或IP地址时,默认会查找并显示这个文件的内容,此处用来测试

6.加载master和backup内核模块

modprobe ip_vs
cat /proc/net/ip_vs

7.配置关闭master和backup的icmp重定向,以便于路由器能够帮助主机优化网络流量路径。

echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects

cat /proc/sys/net/ipv4/conf/all/send_redirects

echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects

echo "1" >/proc/sys/net/ipv4/conf/ens33/send_redirects

8.更改keepalived主配置文件的配置

主要更改以下字段:

global_defs {

   router_id LVS_DEVEL1

}

#此字段只保留这两行



vrrp_instance VI_1 {  #实例号,必须和backup保持一致

state MASTER  #当前服务器在VRRP(Virtual Router Redundancy Protocol)中的角色,如果是备服务器,请更改成BACKUP,必须大写

interface ens33   # 请替换为实际使用的网络接口,eth0是CentOS6及以下版本的网卡名称

virtual_router_id 51 #定义一个虚拟路由器ID,必须和backup保持一致,以便两台服务器能够正常协商主从关系

priority 100   # 设置备份服务器较低的优先级,主优先级高于备

advert_int 1  #定义VRRP通告间隔,即每隔多久发送一次VRRP通告消息。在此例中,设定为每秒发送一次

authentication {

auth_type PASS

auth_pass password   #设置VRRP通信的认证方式。在这个例子中,采用明文密码认证方式,密码是password

}

virtual_ipaddress {

110.110.110.10    # 定义一个或多个虚拟IP地址(VIP),以防止一个VIP失效或与其他IP地址冲突时,可使用其他VIP地址。客户端可以通过这个VIP访问LVS负载均衡器提供的服务 (注:要跟master以及backup在同一网段)

}

}

virtual_server 110.110.110.10 80 {  #定义一个虚拟服务器,IP地址为虚拟IP地址,监听端口为80。当定义多个虚拟IP时,需要定义多个virtual_server

    delay_loop 6  #LVS每隔6秒检查一次后端Real Server的状态

    lb_algo rr   #负载均衡算法选择轮询,可按照需求更改

    lb_kind DR  #负载均衡方式选择直接路由

    persistence_timeout 50   #会话保持超时时间为50秒。在此时间内,来自同一客户端的请求会被发送到同一个后端服务器

    protocol TCP   #使用的协议是TCP



    real_server 110.110.110.252 80 {    #定义后端真实服务器,如此实验中有两个web服务器,则需要配置两个real_server

        weight 1  #权重设置为1。当所有后端服务器健康状态正常时,根据权重比例进行负载均衡。

        HTTP_GET {    #定义使用HTTP GET方法来检查后端服务器的健康状况

            url {

              path /   #指定要访问的URL路径为根目录(/)

            }

            connect_timeout 3  #连接后端服务器的超时时间为3秒

            nb_get_retry 3   #尝试重试获取响应的最大次数为3次

            delay_before_retry 3  #在每次重试之前等待3秒

        }

    }

    real_server 110.110.110.253 80 {

        weight 1

        HTTP_GET {

            url {

              path /

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

可以使用scp将keepalived.conf复制到Backup上,具体操作如下:

Master:scp keepalived.conf 110.110.110.6:/opt/
Backup:cp /opt/keepalived.conf /etc/keepalived/

然后更改backup中的keepalived.conf配置文件的state BACKUP字段和priority 90字段即可

9.master和backup启动ipvsadm

Systemctl start ipvsadm

如果软件无法正常启动,可查看Vim /usr/lib/systemd/system/ipvsadm.service   (ipvsadm启动文件)

在/etc/sysconfig下创建一个ipvsadm空文件,ipvsadm启动时会去此文件读取配置,停止时会将配置保存在此文件中,所以若没有必须创建一个echo > /etc/sysconfig/ipvsadm

10.master和backup启动keepalived

systemctl restart keepalived.service

11.ipvsadm -Ln查看是否有被keepalived分配到节点

12.web下载启动httpd

Yum -y install httpd

Ssystemctl start httpd

13.测试

可用客户机curlVIP地址查看是否能到web服务器

验证keepalived的高可用性

停掉master的keepalived的服务

systemctl stop keepalived

通过客户端继续访问(curl)VIP ,查看是否可以正常访问web服务器

脑裂现象:如果客户机无法正常访问web节点,有可能出现了脑裂现象,即在master和backup中都被漂移到了VIP(backup认为master失效,实则master仍在运行),出现此现象有可能是因为节点失效,网络中断等问题,可检查网络互通性,keepalived配置文件等检查。

你可能感兴趣的:(lvs,网络)