# keepalived配置LVS ## NAT模式 | 主机名 | ip(NAT) | ip(LAN区段) | 角色 | | :---- | :---- | :---- | :---- | | Centos8 | 192.168.159.105 | 192.168.160.105 | keepalived | | Centos8-1 | 192.168.159.106(禁掉) | 192.168.160.106 | nginx1 | | Centos8-2 | 192.168.159.107(禁掉) | 192.168.160.107 | nginx2 | | | | 192.168.160.200 | vip | ### 准备工作 配置新网卡、关闭防火墙、两台机器都安装nginx、将02和03两个节点上的nginx都监听8080端口 ### 安装配置keepalived(Centos8上) yum安装keepalived ``` yum install -y keepalived ``` ### 编辑配置文件 vi /etc/keepalived/keepalived.conf ##写入如下配置 ``` global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface ens224 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass amingLi } virtual_ipaddress { 192.168.160.200 } } virtual_server 192.168.160.200 80 { delay_loop 6 ## 算法为wrr lb_algo wrr ## LVS模式为NAT模式 lb_kind NAT #persistence_timeout 50 protocol TCP real_server 192.168.160.106 80 { weight 3 HTTP_GET { url { path / } connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168.160.107 80 { weight 1 HTTP_GET { url { path / } connect_timeout 3 retry 3 delay_before_retry 3 } } } ``` ### 打开路由转发 ``` echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p ``` ### 启动keepalived ``` systemctl start keepalived ``` ### 另外两个节点上配置默认路由 ``` route add default gw 192.168.159.105 ``` ### 测试(01节点上) ``` curl 192.168.160.200 ``` ## DR模式 | 主机名 | ip(NAT)| 角色 | | :---- | :---- | :---- | | Centos8 | 192.168.159.105 | keepalived | | Centos8-1 | 192.168.159.106 | nginx1 | | Centos8-2 | 192.168.159.107 | nginx2 | | | 192.168.160.200 | vip | ### 准备工作 关闭防火墙、三台机器都安装nginx、将Centos8-1和Centos8-2的nginx都监听80端口 如果做过上面的NAT实验,还需要恢复01和02上的第一块网卡,删除掉刚才配置的默认路由,01节点上的ip转发要关掉 ### 安装配置keepalived(Centos8上) yum安装keepalived ``` yum install -y keepalived ``` ### 编辑配置文件 vi /etc/keepalived/keepalived.conf ##写入如下配置 ``` global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass amingLi } virtual_ipaddress { 192.168.160.200 } } virtual_server 192.168.160.200 80 { delay_loop 6 ## 算法为wrr lb_algo wrr ## LVS模式为DR模式 lb_kind DR #persistence_timeout 50 protocol TCP real_server 192.168.159.106 80 { weight 3 HTTP_GET { url { path / } connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168.159.107 80 { weight 1 HTTP_GET { url { path / } connect_timeout 3 retry 3 delay_before_retry 3 } } } ``` ### 启动服务 ``` systemctl start keepalived ``` ### 另外两个节点上编辑脚本 ``` vi /usr/local/sbin/lvs_rs.sh ##内容如下 #/bin/bash vip=192.168.222.200 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 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 ``` ### 执行脚本 ``` sh /usr/local/sbin/lvs_rs.sh ``` ### 测试 浏览器访问vip 或者 再开启一台虚拟机访问