3、安装当前最新稳定版1.8.0
注1:一开始是用yum安装的nginx,结果发现后端服务器Down机或状态不正常时,nginx也照常转发请求,后面yum erase nginx后,进行了手动安装。因为需要额外添加 nginx_upstream_check_module模块。
注2:安装过程会提示类型这样的错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
所以先安装相应的支持库来解决。pcre,正则表达式匹配支持;zlib,用于压缩等等。
[root@node-01 ~]# yum -y install gcc-c++ pcre-devel zlib-devel
1) 为nginx建立一个www组,并建立一个不登录的账户nginx,放入www用户组
[root@node-01 ~]# groupadd -f www
[root@node-01 ~]# useradd -d /var/cache/nginx -s /sbin/nologin -g www nginx
2) 建立目录用于存放nginx日志文件,并赋权限
[root@node-01 ~]# mkdir /var/log/nginx
[root@node-01 ~]# mkdir /usr/local/nginx
[root@node-01 ~]# chown -R nginx.www /var/log/nginx
[root@node-01 ~]# chown -R nginx.www /usr/local/nginx
3) 分别下载nginx、额外模板及安装
[root@node-01 ~]# mkdir /nginx
[root@node-01 ~]# cd /nginx
[root@node-01 nginx]# wget
[root@node-01 nginx]# wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
[root@node-01 nginx]# tar -xvf nginx-1.8.0.tar.gz
[root@node-01 nginx]# unzip master.zip
#在当前目录下解压出nginx_upstream_check_module-master这个目录
[root@node-01 nginx]# cd nginx-1.8.0/
[root@node-01 nginx-1.8.0]# patch -p1 < /nginx/nginx_upstream_check_module-master/check_1.7.5+.patch
#由于安装版1.8.0稳定版,所以选check_1.7.5+.patch这个补丁包,其他版本相应选择即可
#如果提示bash: patch: 未找到命令...应该安装一下patch命令包yum -y install patch
[root@node-01 nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=www --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --add-module=/nginx/nginx_upstream_check_module-master
[root@node-01 nginx-1.8.0]# make && make install
便于以后的操作,进行以下设置并制作自启动文件:
[root@node-01 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
[root@node-01 ~]# vi /usr/lib/systemd/system/nginx.service
#加下以下内容:
#---------Begin------------------------------------
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#---------end--------------------------------------
[root@node-01 /]# systemctl enable nginx.service
系统启动时让nginx.service自启动。
4) keepalived和Nginx最好也设置开机启动
[root@node-01 ~]# systemctl enable keepalived
[root@node-01 ~]# systemctl enable nginx
五、Keepalived配置
在配置keepalived之前,先关闭selinux
A、vi /etc/selinux/config
B、设置 SELINUX=disabled 保存
C、执行 setenforce 0
如果只想临时关闭,直接输入:setenforce 0
[root@node-01 ~]# vi /etc/keepalived/keepalived.conf
#############keepalived配置#############################################################
! Configuration File for keepalived
global_defs {
}
vrrp_script chk_nginx {
#必须放在track代码的上方,否则无效,测试了几次是这个情况
script "killall -0 nginx"
#用shell命令检查nginx服务是否存在
interval 1
#时间间隔为1秒检测一次
weight -15
#当nginx的进程不存在了,就把当前的权重-15
}
vrrp_instance VI_1 {
state MASTER
#主LVS是MASTER,从主机时此项要改为BACKUP,要大写
interface enp4s0
#LVS监控的网络接口
virtual_router_id 51
#同一实例下virtual_router_id必须相同,MASTRE/BACKUP 设置值要一样
priority 100
#定义优先级,数字越大,优先级越高,把此份Conf拷贝到另一台机器上时,设置的priority值要比MASTRE权重值低
advert_int 1
#MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒