文章目录
一.nginx+keepalive部署
1.架构
2.主备负载均衡器配置
2.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是否启动成功
3.2 配置nginx反向代理
vim /usr/local/nginx/conf/nginx.conf #四层反向代理
stream{
server {
listen 80; #监听1314端口
proxy_pass backend_server; #调用对应的四层反向代理服务
}
upstream backend_server { #配置四层反向代理模块的服务名(与proxy_pass调用的服务名对应)
server 192.168.111.20:80 weight=1; #配置四层反向代理的调度算法、IP/端口、权重等
server 192.168.111.30:80 weight=1;
} #对应upstream模块的大括号
} #对应stream模块的大括号
约47行:七层反向代理的端口注释掉,或者换一个端口号,如下图
nignx -t #检查nginx配置文件语法错误
systemctl restart nginx #重启nginx服务
3.3安装keepalive 高可用
yum install -y keepalived #安装keepalived高可用工具
vim /etc/keepalived/check_nginx.sh #编写nginx健康检查脚本
#!/bin/bash
#effect: Nginx健康检查
count=$(ps -ef |grep nginx |egrep -cv "grep|$$") #ps命令查看运行中的进程-->grep过滤nginx服务-->-v排除这条命令进程
if [ $count -eq 0 ];then #如果运行的nginx命令数量为0,则判断nginx服务停止运行
systemctl stop keepalived #判断成功后,停止主keepalived进程(此时备启动keepalived进程)
fi
chmod +x /etc/keepalived/check_nginx.sh #赋予脚本执行权限
crotab -e #设置脚本每分钟执行一次(也可以编写shell脚本设置开机自启,sleep控制时间,缩短间隔时间)
*/1 * * * * /etc/keepalived/check_nginx.sh
cd /etc/keepalived/
vim keepalived.conf #修改keepalived高可用配置(详情如图)
10行:smtp_server 127.0.0.1
12行:router_id NGINX_01
13-16行:删除
17行:interface ens33
26行:192.168.111.110
27-28行:删除
29行及以下:删除
14行插入以下内容:
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight 2
}
33行插入一下内容:
track_script {
check-nginx
}
systemctl start keepalived.service #启动keepalived服务
3.4备调度器配置
#(在主调度器操作)scp keepalived.conf 192.168.13.40:`pwd` #将配置文件远程传送给备用负载调度器
vim /etc/keepalived/keepalived.conf
12行:router_id NGINX_02 #设置负载均衡类型和主次级别
21行:state BACKUP #设置状态为BACKUP(备份状态,必须大写)
24行:priority 90 #优先级只要比master低就行
systemctl start keepalived #启动keepalived高可用服务
ip addr #此时查看ip,会发现没有VIP地址
#(在主调度器操作)systemctl stop nginx #将主服务器nginx服务停止
4.配置节点服务器
4.1安装jdk环境
#安装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 #刷新环境变量配置文件
4.2编译安装tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh
或
/usr/local/tomcat/bin/catalina.sh start
#前台启动
/usr/local/tomcat/bin/catalina.sh run
netstat -natp | grep 8080
4.3 配置双tomcat虚拟主机
1.创建 aa 和 bb项目目录和文件
mkdir /usr/local/tomcat/webapps/aa
mkdir /usr/local/tomcat/webapps/bb
echo "This is aa page\!" > /usr/local/tomcat/webapps/aa/index.jsp
echo "This is bb page\!" > /usr/local/tomcat/webapps/bb/index.jsp
2.修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
--165行前--插入
<Host name="www.aa.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> #这里指主机
<Context docBase="/usr/local/tomcat/webapps/aa" path="" reloadable="true" />
# 这里指内容
</Host>
<Host name="www.bb.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/bb" path="" reloadable="true" />
</Host>
### 4.4配置nginx
~~~和上面一样
vim /usr/local/nginx/conf/nginx.conf
39行:charset utf-8; #开启万国字符集
47行下插入:
location ~ jsp$ {
proxy_pass http://192.168.111.20:8080;
}
nginx -t #检查语法错误
systemclt start nginx #启动nginx服务
总结
keepalive和lvs是两个完全不同的工具,一个lvs实现了负载均衡解决高并发,keepalive是实现了高可用防止主机宕机造成的损失,这两个结合是平时生产 环境中用的非常多的架构。