Bash
LVS+KEEPAIVED
IP规划
KEEPAIVED 主为MASTER
172.16.30.70
KEEPAIVED 备用BACKUP
172.16.30.71
VIP地址
172.16.30.49
WEB-1
172.16.30.78
WEB-2
172.16.30.79
安装
yum install ipvsadm keepalived -y
备份一下源配置文件:
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak -a
keepalived
主
vim /etc/keepalived/keepalived.conf
改成一下内容
! Configuration File for keepalived
global_defs {
router_id Director1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.30.49/24 dev eth0
}
}
virtual_server 172.16.30.49 80 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
real_server 172.16.30.78 80 {
weight 1
TCP_CHECK {
connect_timeput 3
}
}
real_server 172.16.30.79 80 {
weight 1
TCP_CHECK {
connect_timeput 3
}
}
}
备用
vim /etc/keepalived/keepalived.conf
改成一下内容
! Configuration File for keepalived
global_defs {
router_id Director2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.30.49/24 dev eth0
}
}
virtual_server 172.16.30.49 80 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
real_server 172.16.30.78 80 {
weight 1
TCP_CHECK {
connect_timeput 3
}
}
real_server 172.16.30.79 80 {
weight 1
TCP_CHECK {
connect_timeput 3
}
}
}
解释:
! Configuration File for keepalived
global_defs {
router_id Director1 #两边的ID不一样
}
vrrp_instance VI_1 {
state MASTER #主为MASTER 备用的为BACKUP
interface eth0 #心跳网卡设备名称
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #优先级1-255,数字越大优先级越高
advert_int 1 #检测间隔,单位秒
authentication { #
auth_type PASS #
auth_pass 1111 #
} #
virtual_ipaddress { #虚拟VIP地址
172.16.30.49/24 dev eth0 #VIP地址和工作端口和设备名称
} #
} #
#
virtual_server 172.16.30.49 80 { #LVS的虚拟IP地址和端口
delay_loop 3 #服务轮询的时间间隔
lb_algo rr #LVS调度算法
lb_kind DR #LVS集群模式
protocol TCP #
#
real_server 172.16.30.78 80 { #后端web服务器IP和端口
weight 1 #主机权重为1
TCP_CHECK { #TCP链接校验
connect_timeput 3 #链接超时时间为3,如果超过3秒连不上,服务端就会认为这台服务器挡掉了,就会把这台机器踢出去
} #
} #
real_server 172.16.30.79 80 {
weight 1
TCP_CHECK {
connect_timeput 3
}
}
}
不需要启动LVS,只启动keepalived即可!!
不需要启动LVS,只启动keepalived即可!!
主节点启动
启动keepalived
systemctl start keepalived
开机自启动
systemctl enable keepalived
备用节点启动
启动keepalived
systemctl start keepalived
开机自启动
systemctl enable keepalived
web-1安装nginx
172.16.30.78
脚本安装
vim nginx.sh
输入以下内容
#!/bin/bash
#install nginx
yum install wget gcc pcre pcre-devel openssl-devel openssl gzip make cmake zlib-devel tar lrzsz -y
cd
wget http://nginx.org/download/nginx-1.18.0.tar.gz
useradd -s /sbin/nologin -M nginx
tar zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_mp4_module
make
make install
echo "
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
">/lib/systemd/system/nginx.service
systemctl daemon-reload
systemctl start nginx.service
systemctl enable nginx.service
再来执行脚本
sh nginx.sh
添加测试页面
echo Nginx-1 > /usr/local/nginx/html/index.html
测试访问
[root@nginx-1 ~]# curl 127.0.0.1
Nginx-1
添加虚拟网卡,并编写虚拟网卡配置文件
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 -a
修改虚拟网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
改成以下内容
DEVICE=lo:0
IPADDR=172.16.30.49
NETMASK=255.255.255.255
ONBOOT=yes
解释:
DEVICE=lo:0 #设备名称lo:0
IPADDR=172.16.30.49 #VIP地址也是就是keepalived里面写的VIP地址
NETMASK=255.255.255.255 #子网掩码32位,不要写成24位
ONBOOT=yes #开机启动此设备
添加路由规则,这样开机就可以自动添加了
echo /sbin/route add host 172.16.30.49 dev lo:0 >> /etc/rc.local
添加权限
chmod +x /etc/rc.local
配置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
重启让配置生效
reboot
MASTER上查询LVS
ipvsadm -L
返回结果:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.30.49:80 rr
-> 172.16.30.78:80 Route 1 0 0
-> 172.16.30.79:80 Route 1 0 0
web-2
编译安装nginx,执行以上nginx的脚本即可
安装好以后再来添加测试页面
echo Nginx-2 > /usr/local/nginx/html/index.html
测试访问
[root@nginx-2 ~]# curl 127.0.0.1
Nginx-2
添加虚拟网卡,并编写虚拟网卡配置文件
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 -a
修改虚拟网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
改成以下内容
DEVICE=lo:0
IPADDR=172.16.30.49
NETMASK=255.255.255.255
ONBOOT=yes
解释:
DEVICE=lo:0 #设备名称lo:0
IPADDR=172.16.30.49 #VIP地址也是就是keepalived里面写的VIP地址
NETMASK=255.255.255.255 #子网掩码32位,不要写成24位
ONBOOT=yes #开机启动此设备
添加路由规则,这样开机就可以自动添加了
echo /sbin/route add host 172.16.30.49 dev lo:0 >> /etc/rc.local
添加权限
chmod +x /etc/rc.local
配置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
重启让配置生效
reboot
这样LVS调度就完成,可以用浏览器访问vip地址 172.16.30.49
172.16.30.49