ansible-playbook自动化安装Keepalived实现Nginx服务双机热备自动化配置

脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下:

  • Keepalived自动化安装;
  • keepalived_vrid配置,自动根据vip获取最后一段作为vrid,确保同一网段不会出现vrid冲突导致HA切换失败的问题;
  • 自动配置Keepalived;
  • HA检测脚本自定义,根据脚本内容,来做redis或nginx或其他软件的双机热备;
  • 自动配置vip给Keepalived
  • 设置Keepalived开机启动,加入系统服务;

Keepalived安装脚本如下:

 1 - name: keepalived install and configuration
 2   hosts: "{{ host }}"
 3   user: root
 4
 5   tasks:
 6     - name: Create the dir
 7       file: path={{ item }} state=directory
 8       with_items:
 9         - /usr/local/keepalived
10         - /etc/keepalived
11         - /keepalived_install
12
13     - name: install rpm pkgs for Keepalived
14       yum: name={{ item }} state=present
15       with_items:
16         - make
17         - wget
18         - gcc
19         - gcc-c++
20         - openssl
21         - openssl-devel
22         - popt-devel
23         - automake
24         - autoconf
25         - libtool
26         - ipvsadm
27         - popt-devel
28         - popt-static
29         - libnl-devel
30         - libnfnetlink-devel
31         - nmap
32
33     - name: download keepalived
34       get_url: url=http://10.86.87.142/evunsoft/keepalived-1.2.19.tar.gz dest=/keepalived_install
35
36     - name: unarchive keepalived
37       unarchive: src=/keepalived_install/keepalived-1.2.19.tar.gz dest=/keepalived_install copy=no
38
39     - name: compile and install keepalived
40       shell: cd /keepalived_install/keepalived-1.2.19 && ./configure --prefix=/usr/local/keepalived && make && make install
41
42     - name: compile and install keepalived
43       command: "{{ item }}"
44       with_items:
45         - /bin/cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
46         - /bin/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
47         - /bin/cp /usr/local/keepalived/sbin/keepalived /bin/keepalived
48         - /bin/chmod +x /etc/init.d/keepalived
49         - /sbin/chkconfig --add keepalived
50         - /sbin/chkconfig --level 345 keepalived on
51
52     - name: configure keepalived
53       template: src=/ansible/roles/test/template/keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf
54       notify: restart keepalived
55
56     - name: copy nginx service check scripts to remote host
57       template: src=/ansible/roles/test/template/check_nginx.sh.j2 dest=/usr/local/keepalived/check_nginx.sh mode=0755
58
59     - name: copy vrid config_scripts to remote host
60       template: src=/ansible/roles/test/template/replace_vrid.sh.j2 dest=/tmp/keepalived.sh mode=0755
61
62     - name: modify keepalived_vrid
63       shell: sh /tmp/keepalived.sh
64
65     - name: delete the tmp files.
66       file: path={{ item }} state=absent
67       with_items:
68         - /keepalived_install/keepalived-1.2.19.tar.gz
69         - /keepalived_install/keepalived-1.2.19
70         - /keepalived_install
71         - /tmp/keepalived.sh
72
73   handlers:
74     - name: config vrid
75       shell: bash /tmp/keepalived.sh
76
77   handlers:
78     - name: restart keepalived
79       service: name=keepalived enabled=yes state=restarted

keepalived_install.yml

Keepalived配置模板

 1 ! Configuration File for keepalived
 2
 3 global_defs {
 4    router_id Nginx
 5 }
 6
 7 vrrp_script chk_nginx {
 8     script "/usr/local/keepalived/check_nginx.sh"
 9     interval 2
10     fall 3
11     weight -5
12     rise 1
13 }
14
15 vrrp_instance VI_1 {
16     state BACKUP
17     interface {{ ansible_default_ipv4[‘alias‘] }}
18     virtual_router_id keepalived_vrid
19     priority 90
20     nopreempt
21     advert_int 1
22     authentication {
23         auth_type PASS
24         auth_pass 1111
25     }
26     virtual_ipaddress {
27         {{ nginx_havip }}
28     }
29     track_script {
30         chk_nginx
31    }
32 }

keepalived.conf.j2

NGINX服务检测脚本模板

 1 #!/bin/sh
 2 # check nginx server status
 3
 4 # Source Function Library
 5 . /etc/init.d/functions
 6
 7 NGINX="/usr/local/nginx/sbin/nginx"
 8 NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
 9 NGINX_PID="/usr/local/nginx/logs/nginx.pid"
10 PORT=80
11
12 start_nginx() {
13     daemon $NGINX -c $NGINX_CONF
14 }
15
16 stop_nginx() {
17     killproc -p $NGINX_PID $NGINX -TERM
18 }
19
20 nmap localhost -p $PORT | grep "$PORT/tcp open"
21
22 if [ $? -ne 0 ];then
23     stop_nginx
24     start_nginx
25     sleep 3
26     nmap localhost -p $PORT | grep "$PORT/tcp open"
27     [ $? -ne 0 ] && /etc/init.d/keepalived stop
28 fi

check_nginx.sh.j2

说明:

执行此脚本之前,需要安装nginx。

原文地址:https://www.cnblogs.com/miaocbin/p/9597204.html

时间: 2024-08-05 07:36:41

ansible-playbook自动化安装Keepalived实现Nginx服务双机热备自动化配置的相关文章

keepalived+nginx实现双机热备

keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器. 官网地址:http://www.keepalived.o

HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级

HA(High available)-Keepalived高可用性集群   Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP),类似于工作在3,4,5层的交换机软件.利用其来避免单点故障.即:检测web服务状态.一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服 务器(BACKUP),但是对外表现为一个虚

用haproxy搭建web群集并由keepalived 实现双机热备

搭建haproxy+keepalived高可用群集. 一.案例概述 1.haproxy是目前比较流行的一种集群调度工具,是一款免费开源的软件,并且具有一定得安全性:haproxy较适用于负载较大的web节点,并且支持数万的并发量.同类调度工具还有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有haproxy好.haproxy主要实现web群集的负载均衡haproxy官方网站:http:

keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可以阅读本章,即使部分读者使用Nginx负载均衡,但是在大流量下性能相对于工作在链路层的LVS真是不能同日而语,并且LVS不仅可以实现WEB方面的负载均衡,其他诸如数据库.FTP.Mail等都可以实现. 通常对于小型网站,很多都使用单台服务器,顶多在弄个缓存服务器.数据库服务器.但是一旦流量上来,单台

实现keepalived + tomcat 双机热备

1.安装keepalived 我这里是给予keepalived+mysql 主主双机热备基础上做的 global_defs { router_id HA_MySQL } vrrp_instance VI_1 { state BACKUP interface bond0 virtual_router_id 51 priority 100 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } virtual_i

Linux下部署ftp双机热备 keepalived+ftp

Linux环境下FTP实现双机热备 生产环境中要实现数据存储,本下昂木使用ftp+MFS实现数据存储, 为预防鸡群中ftp单点故障,采用ftp+keepalived实现高可用 两台FTP服务器已安装完毕,且能正常访问,IP地址分别为192.168.10.192和192.168.10.193 vip设置为192.168.10.190 第一步 安装 热备服务软件: LVS: ipvsadm-1.26-3.1.i586.rpm KeepAlived: keepalived-1.2.13.tar.gz

centos 7之keepalived双机热备理论+配置文件详解

一.keepalived工作原理及作用: keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检 查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故 障主机回复后将其重新加入群集.单独部署LVS环境的话,调度器发生宕机的话,整个群集就 失效了,某一个web节点宕机后,客户端在访问时,总会碰上访问不到网页的情况,所以,将 keepalived和LVS结合起来,才可形成一个真正的高可用群集,当然,后端的共享存储也必须 搭建一个

keepalived 双机热备配置文件详解

配置示例:https://blog.51cto.com/14227204/2438902一.keepalived工作原理及作用: keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机回复后将其重新加入群集.单独部署LVS环境的话,调度器发生宕机的话,整个群集就失效了,某一个web节点宕机后,客户端在访问时,总会碰上访问不到网页的情况,所以,将keepalived和L

利用Keepalived实现双机热备详解

在这个高度信息化的IT时代,企业的生产系统.业务运营.销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的.不间断的计算机系统或网络服务. 一.Keepalived双机热备基础知识 1.Keepalived概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集. Keepaliv