Nginx和Keepalived 主备
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_formataccess_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 一定要高于 BAUCKUPauthentication { 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 2weight 2}vrrp_instance VI_1 {state BACKUP ### 设置为 辅机interface eth0virtual_router_id 51 ### 与 MASTRE 设置 值一样priority 100 ### 比 MASTRE权重值 低authentication {auth_type PASSauth_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 fifi
?
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
?