持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
背景 最近负责的有个项目已经到了客户环境的测试阶段,领导要求在客户的内网环境部署一套咱们的服务,要求完全按照生产环境的标准进行部署。思前想后,咱们微服务没啥问题,在正式环境就是多部署几个注册到nacos,但是挡在最前面的nginx肯定只有一台,那不是业也存在单节点问题?经过向大佬请教和网上查阅资料,了解到了keepalived这个神奇。下面是我的研究过程、
步骤
1、Nginx安装配置
1.1、安装要求的环境
1、安装gcc环境
yum install gcc-c++
2、第三方的开发包
2.1 PERE yum install -y pcre pcre-devel
2.2 zlib yum install -y zlib zlib-devel
2.3 openssl yum intsall -y openssl openssl-devel
1.2、安装Nginx
1、下载Nginx
官网地址: nginx.org/en/download…
2、安装Nginx
1. 将nginx源码包上传到Linux上
2. 将Nginx解压到/usr/local下面(目录根据需要可自行指定)
tar -xvf nginx-1.14.0.tar.gz -C /usr/local
3. 进入/usr/local/nginx-1.14.0目录下,执行configure命令生成makeFile文件
cd /usr/local/nginx-1.14.0
./configure \ # \ 代表命令还没有输完,换行的意思
--prefix=/usr/local/nginx \ #表示软件安装到/usr/local/nginx下面
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-file-aio \ --with-http_realip_module
注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要创建该目录
mkdir /var/temp/nginx -p
4. 执行make命令进行编辑,执行make install命令进行安装
1. 进入到nginx-1.14.0目录下,执行make命令(已在该目录下则直接执行)
make
2. 进入到nginx-1.14.0目录下,执行make install命令(已在该目录下直接执行)
make install
3. 进入安装位置/usr/local/nginx 检查是否完成安装
4. 进入conf文件夹修改nginx.conf文件
4.1、进入nginx配置文件目录并编辑
4.2、在配置文件中找到注释 #pid logs/nginx.pid
4.3、将注释打开,并修改为 pid /usr/local/nginx/logs/nginx.pid
5. 在/usr/local/nginx目录下创建logs文件夹
cd /usr/local/nginx
mkdir logs
1.3、启动Nginx
进入sbin目录下,执行命令./nginx
cd /usr/local/nginx/sbin
./nginx
查看nginx是否启动成功
ps -aux | grep nginx
1.4、Nginx实现反向代理和负载均衡
假如有三台应用服务器,分别是:
Tomcat1:192.168.1.1:8081
Tomcat2:192.168.1.2:8082
Tomcat3:192.168.1.3:8083
2、keepalived安装配置(主机配置)
直接使用yum -y install keepalived安装
yum -y install keepalived
查看yum安装的配置文件在哪
rpm -ql keepalived
查看本机网卡名
ifconfig
修改keepalived.conf文件
vi /etc/keepalived/keepalived.conf
3、keepalived安装配置(备机配置)
安装过程与主机安装过程一致,需要修改的地方为备机的/etc/keepalived/keepalived.conf文件
创建nginx脚本文件
cd /usr/local/src
touch nginx_check.sh
vi nginx_check.sh
输入以下命令
#!/bin/bas
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败
exit 1
else
exit 0
fi
else
exit 0
fi
4、启动keepalived
输入启动命令
systemctl start keepalived.service
查看是否成功运行
ps -ef | grep keepalived
设置开机自启动
systemctl enable keepalived
查看主机网卡,可以看到虚拟IP
ip addr show
主机显示虚拟ip
备机不显示虚拟ip
根据配置的虚拟ip地址,访问虚拟ip,查看是否访问成功
关闭主机keepalived,再次访问虚拟ip查看备机是否切换运行
systemctl stop keepalived
总结 配置这个东西可是真费劲啊,但是越是复杂难搞的东西,搞定之后真的是很爽,虚拟ip漂移真的是个很巧妙的设置,我觉得keepalived能实现这个互备功能,主要是虚拟ip起了很大的作用。 虽然今天是搞定了但是其中的原理或者是不是还要其他更好的用法还待我自己以后去细细研究一番。