ansible-galaxy实现对apache的haproxy+keepalived

本文详细介绍如何使用Ansible自动化工具,为服务器集群部署Apache Web服务、HAProxy负载均衡器及Keepalived高可用解决方案。通过编写角色文件、配置模板和任务流程,实现服务安装、启动、配置及重启的自动化操作。
  • 编写apcahe发布文件
[devops@server1 ansible]$ mkdir roles
[devops@server1 ansible]$ cd roles
[devops@server1 roles]$ ansible-galaxy init apache
- apache was created successfully

在这里插入图片描述
[devops@server1 apache]$ cd tasks/
[devops@server1 tasks]$ ls
main.yml
[devops@server1 tasks]$ \vi main.yml##使用\vi命令对文件进行编辑

[devops@server1 apache]$ cat tasks/main.yml 
---
- name: install httpd
  yum:
    name: httpd
    state: present

- name: copy index.html
  copy:
    content: "{{ ansible_facts['hostname'] }}"
    dest: /var/www/html/index.html

- name: configure httpd
  template:
    src: templates/httpd.conf.j2
    dest: /etc/httpd/conf/httpd.conf
    owner: root
    group: root
    mode: 644
  notify: restart httpd

- name: start httpd and firewalld
  service:
    name: "{{ item }}"
    state: started
  loop:
    - httpd
    - firewalld

- name: configure firewalld
  firewalld:
    service: http
    permanent: yes
    immediate: yes
    state: enabled

[devops@server1 apache]$ cd handlers/
[devops@server1 handlers]$ \vi main.yml

[devops@server1 apache]$ cat handlers/main.yml 
---
- name: restart httpd
  service:
    name: httpd
    state: restarted

复制httpd配置文件到模板
[devops@server1 apache]$ cd templates/
[devops@server1 templates]$ cp …/…/…/templates/httpd.conf.j2 .##我是复制已经存在的,若没有可以先下载然后复制到该目录,不需要作修改
[devops@server1 templates]$ ls
httpd.conf.j2

[devops@server1 templates]$ cd …/vars/
[devops@server1 vars]$ ls
main.yml
[devops@server1 vars]$ \vi main.yml

[devops@server1 apache]$ cat vars/main.yml ##这里我加入了一个变量,若没有加改变量,可以不用引入
---
http_port: 80

  • 编写haproxy发布文件
    [devops@server1 roles]$ ansible-galaxy init haproxy
    haproxy was created successfully
    [devops@server1 roles]$ ls
    apache haproxy
    [devops@server1 roles]$ cd haproxy/
    [devops@server1 haproxy]$ ls
    defaults handlers README.md templates vars
    files meta tasks tests
    [devops@server1 haproxy]$ \vi tasks/main.yml
[devops@server1 haproxy]$ cat tasks/main.yml 
---
- name: install haproxy
  yum:
    name: haproxy
    state: present
- name: start haproxy
  service:
    name: haproxy
    state: started
- name: configure haproxy
  template:
    src: haproxy.cfg.j2
    dest: /etc/haproxy/haproxy.cfg
  notify: restart haproxy

[devops@server1 haproxy]$ \vi handlers/main.yml

[devops@server1 haproxy]$ cat handlers/main.yml 
---
- name: restart haproxy
  service:
    name: haproxy
    state: restarted

[devops@server1 haproxy]$ cp …/…/templates/haproxy.cfg.j2 templates/##移动haproxy配置文件至模板
配置文件修改如下
在这里插入图片描述

  • 编写keepalived发布文件(编写时可以从haproxy的发布文件拷贝后进行修改)
    [devops@server1 roles]$ ansible-galaxy init keepalived
     - keepalived was created successfully
     [devops@server1 roles]$ ls
    apache  haproxy  keepalived
    [devops@server1 roles]$ cd keepalived/
    [devops@server1 keepalived]$ \vi tasks/main.yml 

[devops@server1 keepalived]$ cat tasks/main.yml 
---
- name: install keepalived
  yum:
    name: keepalived
    state: present
- name: start keepalived
  service:
    name: keepalived
    state: started
- name: configure keepalived
  template:
    src: keepalived.conf.j2
    dest: /etc/keepalived/keepalived.conf
  notify: restart keepalived

[devops@server1 keepalived]$ \vi handlers/main.yml

[devops@server1 keepalived]$ cat handlers/main.yml 
---
- name: restart keepalived
  service:
    name: keepalived
    state: restarted

修改配置文件

    [devops@server1 keepalived]$ sudo yum install -y keepalived
    [devops@server1 ansible]$ cd roles/keepalived/templates/
    [devops@server1 templates]$ ls
    [devops@server1 templates]$ sudo mv /etc/keepalived/keepalived.conf .
    [devops@server1 templates]$ ls
    keepalived.conf
    [devops@server1 templates]$ pwd
    /home/devops/ansible/roles/keepalived/templates
    [devops@server1 templates]$ mv keepalived.conf keepalived.conf.j2
    [devops@server1 templates]$ ls
    keepalived.conf.j2
    [devops@server1 templates]$ vim keepalived.conf.j2

配置文件:

[devops@server1 keepalived]$ cat templates/keepalived.conf.j2 
! Configuration File for keepalived

global_defs {
   notification_email {
  	root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state {{ STATE }}
    interface eth0
    virtual_router_id {{ VRID }}
    priority {{ PRIORITY }}
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.32.100
    }
}

  • 修改组成员并添加变量

[devops@server1 ansible]$ vim inventory
[devops@server1 ansible]$ cat inventory
[webserver]
server2
server3
[lb]
server1 STATE=MASTER VRID=32 PRIORITY=100
server4 STATE=BACKUP VRID=32 PRIORITY=99

  • 编写发布文件

[devops@server1 ansible]$ vi apa+hap.yml

[devops@server1 ansible]$ cat apa+hap.yml 
---
- hosts: all
  tasks:
  - import_role:
      name: apache
    when: ansible_hostname in groups['webserver']
  - import_role:  
      name: haproxy
    when: ansible_hostname in groups['lb']
  - import_role:  
      name: keepalived
    when: ansible_hostname in groups['lb']

  • 测试
    查看vip位置
    在这里插入图片描述
    访问测试:
    在这里插入图片描述

down掉server1的keepalived服务查看vip

在这里插入图片描述
此時vip迁移到server4
在这里插入图片描述
测试访问
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值