脚本实现通过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=https://www.keepalived.org/software/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

相关文章: