LVS-DR+Keepalived+动静分离实验

目录

架构图​编辑

实验前准备

DR服务器部署

环境准备

配置keepalived

配置虚拟IP(VIP)

ipvsadm服务

Nginx服务器部署

环境准备

Tomcat服务器部署

环境准备

修改配置文件

动静分离配置

修改nginx主配置文件

测试


架构图

解释一下架构,大概就是用Keepalived实现两台DR服务器的LVS负载均衡,然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离
这个实验其实就是把 LVS-DR+Keepalived 和 动静分离 给拼起来,真的是拼起来,两个部分其实就像是独立的部分,互相之间的影响很小

实验前准备

主DR服务器:192.168.188.11   (ens33:0)192.168.188.188
备DR服务器:192.168.188.12   (ens33:0)192.168.188.188
Nginx服务器1:192.168.188.13    (lo:0)192.168.188.188
Nginx服务器2:192.168.188.14    (lo:0)192.168.188.188
VIP(虚拟IP):192.168.188.188
Tomcat服务器1:192.168.188.15
Tomcat服务器2:192.168.188.16
如果只想用四台机器实现,那么就把Tomcat和Nginx部署到同一台就行,比如说Tomcat1和Nginx1同一台,Tomcat2和Nginx2同一台。只需要改一下nginx.conf就行,底下会说

DR服务器部署

环境准备

关闭防火墙
systemctl stop firewalld
setenforce 0

安装ipvsadm和keepalived
yum -y install ipvsadm keepalived

加载ipvs内核模块并查看
modprobe ip_vs
cat /proc/net/ip_vs

配置keepalived

cd /etc/keepalived
备份配置文件
cp keepalived.conf keepalived.conf.bak
对配置文件进行修改
vim keepalived.conf
主备服务器都要配置,下面这张图是主的配置截图,备的配置除了router_id改成LVS_02,state改成BACKUP,priority改成90,其他都一样

配置虚拟IP(VIP)

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.188.188
NETMASK=255.255.255.255


配置完重启网卡
systemctl restart network
打开虚拟网卡
ifup ens33:0
查看一下有没有生效
ip addr

启动keepalived服务
systemctl start keepalived
关于虚拟网卡,在实验过程中总会碰到一个问题,那就是虚拟网卡连接很不稳定,打开后总是过一段时间就断开,具体原因我也排查不出来,也可能是网络不好,如果在后面测试过程中发现失败,可以用ip addr看一下虚拟网卡是不是断开了,如果没了,那就用systemctl restart network重启网络

ipvsadm服务

主DR服务器(192.168.188.11)
备份
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

配置规则
先清空
ipvsadm -C
ipvsadm -A -t 192.168.188.188:80 -s rr
ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.13:80 -g
ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.14:80 -g
查看分发策略

备DR服务器(192.168.188.12)
备份
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
直接查看
ipvsadm -ln,目前并没有策略

当主服务器断开后,备服务器会接收到主服务器的策略,测试的时候可以来这看一下

调整proc响应参数,关闭Linux内核的重定向参数响应
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

Nginx服务器部署

环境准备

关闭防火墙
systemctl stop firewalld
setenforce 0

安装Nginx,不再赘述,这里只说一件事,pid改不改不影响使用,但是如果你改了nginx.conf里面的pid位置,那么就必须创建相应的目录

为了方便测试,在Nginx1和Nginx2的index.html文件里随便写点东西以示区分就行

配置虚拟网卡(lo:0)
vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0
ONBOOT=yes
​​​​​​​IPADDR=192.168.188.188
NETMASK=255.255.255.255


重启网卡
systemctl restart network
启动虚拟网卡
ifup lo:0
查看
ip addr

添加路由规则
route add -host 192.168.188.188 dev lo:0

调整proc响应参数
vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2



sysctl -p

Tomcat服务器部署

环境准备

关闭防火墙
systemctl stop firewalld
setenforce 0

安装JDK、Tomcat不再赘述,不知道怎么安装可以看前面的实验

创建测试的应用目录
mkdir /usr/local/tomcat/webapps/test
写一个页面,这是Tomcat1的
vim /usr/local/tomcat/webapps/test/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

写一个页面,这是Tomcat2的
vim /usr/local/tomcat/webapps/test/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>   #指定为 test2 页面
</head>
<body>
<% out.println("动态页面 2,http://www.test2.com");%>
</body>
</html>

修改配置文件

vim /usr/local/tomcat/conf/server.xml
因为新增的Host的name也是localhost和原本的重名了,所以把原本的删掉

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true">
	</Context>
</Host>

重启服务
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

动静分离配置

(只需要在Nginx服务器上修改就行)

修改nginx主配置文件

vim /usr/local/nginx/conf/nginx.conf
如果你只用了4台机器,也就是说Nginx服务器同时是Tomcat服务器,那么就把服务器地址池里的IP地址改成Nginx的IP地址就行,端口不变

保存并重启服务
systemctl restart nginx

测试

在客户端的浏览器输入VIP,也就是192.168.188.188可以访问到静态页面,多刷新几次看看负载均衡有没有问题
这里要说一下,可能是LVS本身有问题,导致Nginx1的页面和Nginx2的页面总有一个很难刷新出来,这并不代表就是错的,如果一直只能看到Nginx1,那就把Nginx1服务器上的Nginx服务直接停了,再刷新,如果能访问到Nginx2那就说明没问题
再输入192.168.188.188/index.jsp就能访问到动态页面,多刷新几次看看负载均衡有没有问题,这里用的Nginx的调度算法,就能正常显示Tomcat1和Tomcat2的动态页面

​​​​​​

  • 31
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值