目录
一、实验环境准备
二、配置负载调度器lvs(主192.168.59.11,备192.168.59.10)
安装ipvsadm工具
配置VIP地址(主192.168.59.100)
调整内核(proc)响应参数
配置负载分配
lvs2(备192.168.59.10)相同配置 (把上面再执行一遍)
三、部署共享存储(NFS:192.168.59.14)
安装nfs和rpcbind
创建共享目录并设置权限
输入页面内容
设置共享目录并发布共享
备lvs:192.168.59.10相同配置
四、部署节点服务器(tomcat1,tomcat2)
配置虚拟VIP地址(vip:192.168.59.100) {两台节点服务器都需要配置}
启动lo:0网卡,添加VIP本地访问路由
设置系统自动识别,并设置执行权限
调整内核的arp响应参数以阻止更新VIP的MAC地址,避免发生冲突
安装tomcat、nfs、rpcbind
web2和web1一样的配置,但是注意修改IP
web1:挂载共享目录
web2:挂载共享目录
到这里我们小小的测试以下
五、部署keepalived
修改配置文件keepalived.conf(这步主备lvs操作一致)
配置主lvs(192.168.59.11)
配置备lvs(192.168.59.10)
六、最终测试
总结
DR服务器(LVS):主-192.168.59.11 备-192.168.59.10
tomcat1:192.168.59.12
tomcat2:192.168.59.13
VIP(虚拟回环):192.168.59.100
NFS:192.168.59.14
客户端:192.168.59.90
因为是在内网环境中我们需要配置本地yum仓库,并且关闭防火墙
#!/bin/bash
########关闭防火墙############
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#######yum仓库#########
mount /dev/cdrom /mnt
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
touch /etc/yum.repos.d/local.repo
echo "
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
" > /etc/yum.repos.d/local.repo
yum clean all
yum makecache
要在每台主机中都执行一遍
执行效果。
yum -y install ipvsadm
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
ifup ens33:0 #开启网卡
ifconfig
对于DR集群模式来说,由于LVS负载调度器和个节点需要共用VIP地址,一个关闭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
ipvsadm -C
ipvsadm -A -t 192.168.59.100:80 -s rr
ipvsadm -a -t 192.168.59.100:80 -r 192.168.59.12:80 -g
ipvsadm -a -t 192.168.59.100:80 -r 192.168.59.13:80 -g
ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
yum -y install nfs-utils rpcbind
systemctl start nfs
systemctl start rpcbind
mkdir /opt/db1 /opt/db2
chmod 777 /opt/zb /opt/lc
echo "i am web1" > /opt/db1/index.html
echo "i am web2" > /opt/db2/index.html
vim /etc/exports
/opt/db1 192.168.59.0/24(rw,sync)
/opt/db2 192.168.59.0/24(rw,sync)
exportfs -rv
tomcat1:192.168.59.12
tomcat2:192.168.59.13
此地址仅作为发送web响应数据包的源地址,并不需要监听客户机的访问请求(这里由调度器调度并分发)。因此实验虚接口lo:0来承担VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通讯紊乱。
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
ifup lo:0
ifconfig lo:0
route add -host 192.168.59.100 dev lo:0
vim /etc/rc.local
/sbin/route add -host 192.168.59.100 dev lo:0
chmod +x /etc/rc.d/rc.local
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
tomcat可以使用wget下载(没有网,可以预先下载然后传进去)
yum -y install java
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
tar -xvf apache-tomcat-9.0.65.tar.gz
mv apache-tomcat-9.0.65 /usr/local/tomcat
#进入配置文件,修改端口为8000
vim /usr/local/tomcat/conf/server.xml
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/startup.sh
startup.sh #开启tomcat
systemctl start nfs rpcbind #开启服务
访问一下试试就安装完成了
mount.nfs 192.168.59.14:/opt/db1 /usr/local/tomcat/webapps/ROOT/
df -hT
mount.nfs 192.168.59.14:/opt/db2 /usr/local/tomcat/webapps/ROOT/
df -hT
这样我们lvs+tomcat+nfs就部署完成
这我们选择yum安装就行
yum -y install keepalived
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak #备份以下配置文件
vim keepalived.conf
这里配置的是双主热备,比单配的会更快地切换,还在当中添加了负载均衡策略,配置了后我们其实也不需要再配本地的负载均衡策略了。
! Configuration File for keepalived
global_defs { #定义全局参数
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1 #邮件服务指向地址
smtp_connect_timeout 30
router_id LVS_1 #指定服务器名,主备服务器不能相同!!!
vrrp_skip_check_adv_addr
#vrrp_strict #一定要注释,取消严格遵守vrrp协议功能,否则VIP无法被连接
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { #定义VRRP热备份实力参数
state MASTER #指定热备状态,主为MASTER,备为BACKUP
interface ens33 #指定承载的VIP地址的物理接口
virtual_router_id 10 #指定虚拟路由器的ID号,每个热备组保持一致
priority 100 #指定优先级,数值越大优先级越高
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #定义认证信息,每个热备组保持一致
auth_type PASS #认证类型
auth_pass 1111 #指定验证密码,主备服务器保持一致
}
virtual_ipaddress {
192.168.59.200 #指定集群VIP
}
}
vrrp_instance VI_2 { #第二个热备组,含义与上方一致
state BACKUP
interface ens33
virtual_router_id 11
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.59.200
}
}
virtual_server 192.168.59.100 80 { #指定虚拟服务器地址(VIP)、端口、定义虚拟服务器和RIP服务器地址池参数
delay_loop 6 #健康检查的间隔
lb_algo rr #指定调度算法:轮询(rr)
lb_kind DR #指定集群工作模式,直接路由(DR)
persistence_timeout 0 #连接保持时间
protocol TCP #应用服务采用的TCP协议
real_server 192.168.59.12 80 { #指定第一个web节点的地址,端口
weight 1 #节点权重
TCP_CHECK{ #添加健康检查方式
connect_port 80 #添加检查的端口
connect_timeout 3 #添加连接超时时间
nb_get_retry 3 #添加重试次数
delay_beforce_retry 3 #添加重试间隔
}
}
real_server 192.168.59.13 80 { #指定第二个web节点的地址,端口
weight 1
TCP_CHECK{
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_beforce_retry 3
}
}
}
systemctl start keepalived
ip a
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_2
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 10
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.59.200
}
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 11
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.59.200
}
}
erver 192.168.59.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.59.12 80 {
weight 1
TCP_CHECK{
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_beforce_retry 3
}
}
real_server 192.168.59.13 80 {
weight 1
TCP_CHECK{
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_beforce_retry 3
}
}
}
systemctl start keepalived
ip a
现在我们是可以正常访问的
我们将主lvs断掉,查看备
再看客户端
还是可以正常访问,到此配置结束
集群满足的三个特点:负载均衡,健康检查,故障切换
对于节点服务器:健康检查如果发现有故障的节点就会将其隔离或者提出集群。待其恢复后在重新加入集群当中。
负载均衡器:健康检查会定时检查主机的状态(包括主机和服务状态)如果主故障就会自动切换到备主机上,待主的恢复重新在让主承载业务请求。