1. 机器
主机 CentOS 6.4 192.168.1.138
备机 CentOS 6.4 192.168.1.139
2. NGINX安装
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
可能还需要安装
sudo apt-get install openssl libssl-dev
tar zxvf xxx
./configure –prefix=/usr/local/nginx
make
sudo make install
nginx.conf
user www www; worker_processes 8; error_log /usr/nginx/logs/nginx_error.log error; pid /usr/nginx/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } http { include mime.types; default_type application/octet-stream; #设置请求缓冲 #gzip压缩 #禁止通过IP访问站点 server { server_name_; return 404; } server { listen 80; server_name www.1paituan.com; index index.html index.htm index.jsp index.do; root /data/htdocs/www/shop; #所以jsp页面请求交由tomcat处理 location ~ \.(jsp|jspx|do)?$ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:8080; } location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { expires 1d; } location ~ .*\.(js|css)?$ { expires 1h; } #定义访问日志的格式 log_format access_log /usr/nginx/logs/nginx_access.log access; } }
启动: cd /usr/local/nginx
./nginx
3. 安装Keepalived
yum install Keepalived
keepalived.conf-mastre
vrrp_script chk_http_port { script "/opt/nginx_pid.sh" ###监控脚本 interval 2 ###监控时间 weight 2 ###目前搞不清楚 } vrrp_instance VI_1 { state MASTER ### 设置为 主 interface eth0 ### 监控网卡 virtual_router_id 51 ### 这个两台服务器必须一样 priority 101 ### 权重值 MASTRE 一定要高于 BAUCKUP authentication { auth_type PASS ### 加密 auth_pass eric ### 加密的密码,两台服务器一定要一样,不然会出错 } track_script { chk_http_port ### 执行监控的服务 } virtual_ipaddress { 192.168.219.100 ### VIP 地址 } }
keepalived.conf-backup
vrrp_script chk_http_port { script "/opt/nginx_pid.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP ### 设置为 辅机 interface eth0 virtual_router_id 51 ### 与 MASTRE 设置 值一样 priority 100 ### 比 MASTRE权重值 低 authentication { auth_type PASS auth_pass eric ### 密码 与 MASTRE 一样 } track_script { chk_http_port } virtual_ipaddress { 192.168.219.100 } }
4. Shell脚本
nginx_pid.sh
#nohup /bin/bash /opt/nginx_pid.sh & nginxpid='ps -C nginx --no-header |wc -l' if [ $nginxpid -eq 0 ];then /usr/nginx/sbin/nginx sleep 3 if [ 'ps -C nginx --no-header |wc -l' -eq 0 ];then killall keepalived fi fi
5. 启动顺序
先启动Nginx /usr/nginx/sbin/nginx
然后nginx_pid nohup /bin/bash /opt/nginx_pid.sh
后启动Keepalived /etc/keepalived/keepalived.conf
or service keepalived start
都可以用 ps -ef|grep nginx查询运行情况
测试 killall nginx