镜像
- 安装nginx(http模块:nginx_upstream_check_module)
yum install -y gcc gcc-c++
yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel
yum install -y patch wget unzip vim
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -xzvf nginx-1.12.2.tar.gz
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
unzip master
cd nginx-1.12.2
patch -p1 < /root/nginx_upstream_check_module-master/check_1.12.1+.patch
./configure --prefix=/usr/local/nginx --add-module=/root/nginx_upstream_check_module-master
make && make install
vim /etc/profile
PATH=$PATH:/usr/local/nginx/sbin
export PATH
source /etc/profile
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#检测是否无误
nginx -t
- 安装nginx低版本1.9之下(tcp模块:nginx_tcp_proxy_module)
yum install -y gcc gcc-c++
yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel
yum install -y patch wget unzip vim git
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -xzvf nginx-1.8.0.tar.gz
git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git
patch -p1 < ./nginx_tcp_proxy_module/tcp.patch
./configure --add-module=/path/to/nginx_tcp_proxy_module
make
make install
- 安装nginx高版本1.10之上(tcp模块:ngx_healthcheck_module)
yum install -y gcc gcc-c++
yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel
yum install -y patch wget unzip vim git
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -xzvf nginx-1.12.2.tar.gz
git clone https://github.com/zhouchangxun/ngx_healthcheck_module.git
patch -p1 < ./ngx_healthcheck_module/nginx_healthcheck_for_nginx_1.12+.patch
cd nginx-1.12.2/
.configure --with-stream --add-module=../ngx_healthcheck_module/
make
make install
- 启动nginx
docker run --privileged -d --name nginx nginx:版本 init
source /etc/profile
nginx -t #检查是否有误
- 安装keepalived
yum install -y libnl*
yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
yum -y install vim iproute lrzsz
cd keepalived-1.3.5/
./configure --prefix=/usr/local/keepalived
make
make install
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
[root@master-1 keepalived-1.3.5]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id master-1
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.214.100
}
track_script {
chk_nginx
}
}
- nginx_check.sh
#!/bin/bash
A=`netstat -ntlp | grep :80 | wc -l`
if [ $A -eq 0 ];then
pkill keepalived
fi
如果启动失败
修改keepalived.service配置文件(vim /lib/systemd/system/keepalived.service)(systemctl daemon-reload)
modprobe ip_vs
modprobe ip_vs_wrr
docker run -it -d --privileged --network=host --name keepalived keepalived:v1 init
重启docker