目录
一、作用
使用keepalived解决lvs的单点故障
高可用集群
二、环境简介
1.准备6台虚拟机,2台做LVS主备调度器,2台做web服务器,1台做存储,1台客户机验证
2.LVS主备调度器 master(192.168.1.106)backup(192.168.1.110)
3.web1(192.168.1.120)web2(192.168.1.128)
4.存储(192.168.1.121)
5.客户机(192.168.1.140)
6.虚拟ip(192.168.1.156)
三、操作步骤
部署web服务器
调整web1与web2的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
web1与web2安装 http
yum -y install httpd
web1与web2分别写一个index.html用于测试(/var/www/html/ )httpd的网站根目录
echo "web1" >/var/www/html/index.html
echo "web2" >/var/www/html/index.html
web1与web2创建虚拟ip
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.156
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
重启网卡(可以看到下图已经创建成功)
systemctl restart network
ip a查看
web1与web2添加回环路由
route add -host 192.168.1.156/32 dev lo:0
route -n 查看
启用httpd
systemctl start httpd
部署LVS主备调度器
调整master和backup的ARP参数(一致)
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
master和backup安装 keepalived ipvsadm(一致)
yum install -y keepalived ipvsadm
配置keepalived master(红色字体master和backup不一致的地方)
vim /etc/keepalived/keepalived.conf
【进去之后除了第一行全部删掉】
global_defs {
router_id LVS_DEVEL1
}vrrp_instance master {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.156
}
}virtual_server 192.168.1.156 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCPreal_server 192.168.1.120 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.128 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
配置keepalived backup
global_defs {
router_id LVS_DEVEL2
}vrrp_instance backup {
state BACKUP
interface ens33
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.156
}
}virtual_server 192.168.1.156 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCPreal_server 192.168.1.120 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.128 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
touch /etc/sysconfig/ipvsadm
【这条命令的意思是在/etc/sysconfig目录下创建一个名为ipvsadm的文件。该文件是用于配置IPVS(IP Virtual Server)的工具,IPVS是一个Linux内核模块,用于实现负载均衡和高可用性。在该文件中,可以设置】
启动master和backup的keepalived与ipvsadm
systemctl start keepalived
systemctl start ipvsadm
systemctl restart keepalived
systemctl restart ipvsadm
master和backup加载ip_vs模块
modprobe ip_vs
查看lvs节点状态【先开启再重启才能响应】
ipvsadm -ln
输入curl 192.168.1.156 进行测试(下图可以看到测试成功,自动切换web1与web2)
到本机浏览器输入虚拟ip查看
关掉主服务器再次查看【关掉主服务器之后 从服务器会自动接替主服务器的工作】
部署NFS共享服务器
存储配置文件
(rw:指定共享目录具备可读写权限)
(no_all_squash: 所有用户操作文件是什么用户就保留什么用户权限,不转换用户身份)
安装nfs
yum -y install nfs-utils
vim /etc/exports
/data/www/html/ 192.168.1.0/24(rw,no_all_squash)
mkdir -p /data/www/html
echo "web aaabbb123321" >/data/www/html/index.html
systemctl start nfs
showmount -e
web1和web2挂载共享存储
mount 192.168.1.121:/data/www/html /var/www/html/
测试(下图可以看到可以正常访问共享存储里面的内容了)
nfs服务器输入curl 192.168.1.156 查看