(六)、nginx负载均衡即keepalived高可用部署

中小型规模网站集群架构:nginx负载均衡

: Ago linux运维群:https://hankbook.cn


前言

nginx的反向代理拥有负载均衡功能,即此处用nginx来完成
rpm包制作,根之前的安装环境一样即可
高可用用keepalived来实现,用yum安装即可

yum install -y keepalived

LNMP搭建,点击此处

1.各个配置文件

nginx配置文件

nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


    upstream server_pools {
        server 172.16.1.7 weight=1 max_fails=3 fail_timeout=10s;
        server 172.16.1.8 weight=1 max_fails=3 fail_timeout=10s;
    }

    server {
        listen 10.0.0.3:80;
        server_name www.etiantian.org;
        location / {
            proxy_pass http://server_pools;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
                access_log  logs/access_www.log  main;

        }
    server {
        listen 10.0.0.3:80;
        server_name blog.etiantian.org;
        location / {
            proxy_pass http://server_pools;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
                access_log  logs/access_blog.log  main;

        }
    server {
        listen 10.0.0.3:80;
        server_name bbs.etiantian.org;
        location / {
            proxy_pass http://server_pools;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
                access_log  logs/access_bbs.log  main;

}
}

2.keepalived配置文件

master的配置文件,即172.16.1.5上

global_defs {
   router_id LVS_01
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.3/24 dev eth0 label eth0:1
    }
}

backup的配置文件,即172.16.1.6上
监控主的vip,防止脑裂方法之一

#!/bin/bash
#name: check_web.sh
#desc: check nginx and kill keepalived 
if [ `ps -ef |grep nginx |grep -v grep |wc -l` -lt 2  ];then
     /etc/init.d/keepalived stop 
fi
global_defs {
   router_id LVS_02
}
vrrp_script check_web {
script "/server/scripts/check_web.sh"  
interval 2   
weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.3/24 dev eth0 label eth0:1
    }
  track_script {
  check_web
  }

}

2.ansible剧本走起

---
- hosts: 172.16.1.5 172.16.1.6
  tasks:
  - name: base
    include: /server/playbook/base.yml
  - name: "install nginx"
    yum:
      name: nginx
      state: installed
  - name: "install keepalived"
    yum:
      name: keepalived
      state: installed
  - name: "push nginx cfg to server"
    copy:
      src: /server/files/nginx_lb.cfg
      dest: /application/nginx/conf/nginx.conf
      mode: 0600
      owner: www
      group: www
  - name: "sysctl"
    shell: echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf && sysctl -p
    ignore_errors: True
  - name: "start nginx"
    shell: /application/nginx/sbin/nginx
    ignore_errors: True
- hosts: 172.16.1.5
  tasks:
  - name: "keepalived master cfg"
    copy:
      src: /server/files/keepalived_master.cfg
      dest: /etc/keepalived/keepalived.conf
  - name: "start keepalived"
    service:
      name: keepalived
      state: started
      enabled: yes
  - name: "kaiji ziqi"
    shell: chkconfig keepalived on
- hosts: 172.16.1.6
  tasks:
  - name: "keepalived backup cfg"
    copy:
      src: /server/files/keepalived_backup.cfg
      dest: /etc/keepalived/keepalived.conf
  - name: "naolie scripts"
    copy:
      src: /server/scripts/check_web.sh
      dest: /server/scripts/check_web.sh
  - name: "start keepalived"
    service:
      name: keepalived
      state: started
      enabled: yes
  - name: "kaiji ziqi"
    shell: chkconfig keepalived on
posted @ 2017-04-03 15:50  汉克书  阅读(549)  评论(0编辑  收藏  举报