【集群】LVS+keepalived高可用、nginx+Tomcat动静分离、nfs共享存储


前言

本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。


一、LVS+keepalived

1.0 架构概况

作用 IP地址 安装服务
负载均衡器(主) 192.168.13.10 ipvsadm/keepalived
负载均衡器(备) 192.168.13.20 ipvsadm/keepalived
节点服务器1 192.168.13.30 nginx/Tomcat
节点服务器2 192.168.13.40 nginx/Tomcat
NFS共享存储 192.168.13.50 rpcbind/nfs

1.1 环境配置

  • 任何实验,如果你不想花几个小时排障的话,第一步:必须是关闭防火墙
  • systemctl stop firewalld
  • sentenceforce 0

1.2 NFS共享存储

systemctl stop firewalld
setenforce 0

yum install -y rpcbind											#安装rpcbind服务,nfs启动的基础环境

mkdir -p /opt/nfs/web1 /opt/nfs/web2							#编写共享目录内容,做测试用
echo '这是192.168.13.30的网页'>/opt/nfs/web1/index.html
echo '这是192.168.13.40的网页'>/opt/nfs/web2/index.html

vim /etc/exports												#配置配置共享目录权限(可读可写,可修改目录,root用户不降权)
/opt/nfs/web1 192.168.13.0/24(rw,sync,no_root_squash)
/opt/nfs/web2 192.168.13.0/24(rw,sync,no_root_squash)

systemctl start rpcbind.service									#必须先启动rpcbind服务
systemctl start nfs												#再启动nfs服务

showmount -e

1.3 节点服务器(nginx+Tomcat动静分离)

1.3.0 配置挂载/网络环境

mount 192.168.13.50:/opt/nfs/web1 /usr/local/nginx/html/	#挂载nfs共享存储的内容

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0										#通过配置虚拟网卡,产生VIP地址
vim ifcfg-lo:0
	DEVICE=lo:0
	IPADDR=192.168.13.100
	NETMASK=255.255.255.255
	ONBOOT=yes
ifup lo:0													#启动该虚拟网卡,生成VIP地址:192.168.13.100

vim /etc/rc.local											#将VIP地址添加至配置文件中,并设置为开机自动添加
	route add -host 192.168.13.100 dev lo:0
chmod +x /etc/rc.d/rc.local									#赋予脚本权限

#1:只响应目的IP地址为物理网卡地址的arp请求
#2:arp请求的源IP必须和接收网卡同网段
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													#刷新内存中的配置(立即生效)

1.3.1 编译安装nginx服务

yum -y install pcre-devel zlib-devel make					#安装编译环境
useradd -M -s /sbin/nologin nginx							#创建专门管理nginx的系统用户

tar xf /opt/nginx-1.12.0.tar.gz -C /opt/					#解压nginx源码包
cd /opt/nginx-1.12.0/										#进入解压后的目录,对nginx的模块进行配置
./configure \
--prefix=/usr/local/nginx \									#配置nginx安装路径
--user=nginx \												#配置nginx管理用户
--group=nginx \												#配置nginx所属组
--with-http_stub_status_module \							#监视模块,可以查看目前的连接数等一些信息(非核心模块)
--with-stream												#四层反向代理模块(想启动四层代理,必须安装该模块)

make -j 4 && make install									#编译安装nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/			#将nginx命令做软链接,方便后续使用

vim /lib/systemd/system/nginx.service						#将nginx添加到系统服务当中(方便启动/关闭/开机自启)
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service					#赋予nginx服务文件执行权限
systemctl enable --now nginx.service						#设置nginx为开机自启,并立即启动nginx服务
netstat -natp |grep nginx									#查看nginx是否启动成功

vim /usr/local/nginx/conf/nginx.conf						#设置动静分离内容
	39行:charset utf-8;
	48行插入以下内容:
	location ~ jsp$ {
    
    
    proxy_pass http://127.0.0.1:8080;
	}

nginx -t													#检查语法问题
systemctl restart nginx										#重启nginx服务

在这里插入图片描述


1.3.2 编译安装jdk环境

cd /opt
#安装jdk环境(Tomcat是基于jdk环境运行的)
tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/				#将源码包下载至对应的目录

cat >/etc/profile.d/jdk.sh<<EOF								#设置jdk相关的环境变量(以前有解释过)
JAVA_HOME=/usr/local/jdk1.8.0_91
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
EOF

source /etc/profile.d/jdk.sh								#刷新环境变量配置文件
java -version												#显示的版本应该与源码包的版本一致(博主是:1.8.0_131)

1.3.3 编译安装Tomcat

cd /opt
#下载Tomcat源码包
tar xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

mkdir -p /usr/local/tomcat/webapps/test
cd /usr/local/tomcat/webapps/test

#Tomcat动态主页配置(不需要精通,只需要简单的配置,能进行检测即可)
cat >index.jsp<<EOF
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
<body>
<% out.println("动态页面2,this is web 2");%>
</head>
</body>
</html>
EOF

#修改Tomcat动态页面路径指向(不需要精通,只需要简单的配置,能进行检测即可)
sed -i '148,149d' /usr/local/tomcat/conf/server.xml
sed -i '148i <Host name="localhost"  appBase="webapps"\n  unpackWARs="true" autoDeploy="true"\n  xmlValidation="false" xmlNamespaceAware="false">' /usr/local/tomcat/conf/server.xml
sed -i '151i <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />' /usr/local/tomcat/conf/server.xml
#唯一要注意的就是151行,这行是路径指向,其余的都是默认配置,复制粘贴即可

/usr/local/tomcat/bin/startup.sh						#启动Tomcat服务

#此时网页访问http://192.168.13.30和http://192.168.13.30/index.jsp会产生动静分离的效果

1.4 负载均衡高可用搭建

1.4.1 负载均衡调度器(主)

yum install -y ipvsadm keepalived
cd /etc/keepalived
vim keepalived.conf
	10行:smtp_server 127.0.0.1
	12行:router_id LVS_01
	13-16行:删除
	
#vrrp热备份模块#
	17行:interface ens33
	19行(priority 100上方插入):nopreempt
	27行:192.168.13.100
	28-29行:删除
	
#virtual虚拟服务器模块#
	31行:virtual_server 192.168.13.100 80 {
    
    
	34行:lb_kind DR
	35行:persistence_timeout 0
	36行:protocol TCP
	
	38行:real_server 192.168.13.20 80 {
    
    
	39行:weight 1
	40行:TCP_CHECK {
    
    
	41行:connect_port 80
	42行:connect_timeout 3
	43行:nb_get_retry 3
	44行:delay_before_retry 3
	45行:}
	46行:}
	
	47行及以下:38,46 co 46								#将上面9行节点服务器配置复制下来,改一下节点服务器IP地址即可
	56行:}												#对应virtual_server 192.168.13.100 80的大括号
	56行以下:全部删除

vim /etc/sysctl.conf									#关闭ip转发功能,并配置相关配置
	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												#重新加载内存中的配置(立即生效)

systemctl start keepalived								#启动keepalived高可用服务
ipvsadm-save > /etc/sysconfig/ipvsadm					#生成ipvsadm文件(必须先生成,才能启动ipvsadm)
systemctl start ipvsadm									#启动ipvsadm服务

systemctl restart keepalived							#重启keepalived高可用服务
ipvsadm -ln												#查看转发规则是否成功(博主成功配置后,显示如下)
	192.168.13.30:80             Route   1      0          0
	192.168.13.40:80             Route   1      0          0

在这里插入图片描述


1.4.2 负载均衡调度器(备)

  • 与负载均衡调度器(主)的操作大体相同,仅有keepalived配置文件略有不同
yum install -y ipvsadm keepalived
cd /etc/keepalived/

#在负载均衡调度器(主)上操作,节省时间:scp keepalived.conf 192.168.13.20:`pwd`
vim keepalived.conf
	12行:router_id LVS_02
	16行:state BACKUP
	20行:priority 90

vim /etc/sysctl.conf									#关闭ip转发功能,并配置相关配置
	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												#重新加载内存中的配置(立即生效)
	
systemctl start keepalived								#启动keepalived高可用服务
ipvsadm-save > /etc/sysconfig/ipvsadm					#生成ipvsadm文件(必须先生成,才能启动ipvsadm)
systemctl start ipvsadm									#启动ipvsadm服务

systemctl restart keepalived							#重启keepalived高可用服务
ipvsadm -ln												#查看转发规则是否成功(博主成功配置后,显示如下)
	192.168.13.30:80             Route   1      0          0
	192.168.13.40:80             Route   1      0          0

二、测试

  • 1、网页访问http://192.168.13.100会产生负载均衡效果,访问http://192.168.13.100/index.jsp会产生动静分离效果
  • 2、主负载:systemctl stop keepalived,VIP地址跳到备用负载均衡器(ip addr查看)

三、结语

  • keepalived配置文件,要注意大括号的对齐
  • 如果一切配置完毕,VIP地址不出现,可以尝试重启keepalived
  • 节点服务器配置好虚拟网卡之后,记得启动该虚拟网卡,否则负载均衡调度器会找不到节点服务器

猜你喜欢

转载自blog.csdn.net/H875035681/article/details/125220081