SaltStack之httpd+ningx+haproxy实现负载均衡

本文详细介绍了如何使用SaltStack在多台服务器上部署HAProxy负载均衡服务,包括配置YUM源、安装和配置HAProxy,以及通过SaltStack进行自动化部署的过程。

##接上片博文
各主机信息:

  • server1(master)—提供haproxy服务
  • server2(minion)—提供之前推送的httpd服务
  • server3(minion)—提供之前推送的nginx服务
  • server4(minion)—提供haproxy服务

一、添加server4为server1的minion

<1>配置server4的yum源

[root@server4 ~]# vim /etc/yum.repos.d/dvd.repo
[dvd]
name=rhel7.3
baseurl=http://172.25.83.83/rhel7.3
gpgcheck=0
enabled=1
 
[salt]
name=saltstack
baseurl=http://172.25.83.83/2018
gpgcheck=0

<2>下载并配置salt

[root@server4 ~]# yum install salt-minion
[root@server4 ~]# vim /etc/salt/minion
 16 master: 172.25.83.1
[root@server4 ~]# systemctl start salt-minion

示图:server4端(minion)启动salt-minion服务之后,会和172.25.83.1:4506建立一个连接
在这里插入图片描述
<3>在master端(server1)上查看并添加key。

[root@server1 ~]# salt-key -L
[root@server1 ~]# salt-key -A

在这里插入图片描述
<4>检测salt服务:

[root@server1 ~]# salt server4 test.ping   #调用test模块的ping方法进行测试

在这里插入图片描述
server1同上

二、SaltStack部署—haproxy

在这里插入图片描述
1.部署脚本

[root@server1 ~]# cd /srv/salt
[root@server1 salt]# ls
_grains  httpd  nginx  top.sls  users
[root@server1 salt]# mkdir haproxy
[root@server1 salt]# cd haproxy/
[root@server1 haproxy]# vim install.sls
haproxy-install:
  pkg.installed:
    - pkgs:
      - haproxy

2.执行推送

[root@server1 haproxy]# salt server4 state.sls haproxy.install

在这里插入图片描述
3.minion端(server4)查看,安装成功

[root@server4 ~]# rpm -q haproxy

在这里插入图片描述

安装&启动&配置haproxy

1.在haproxy中创建files目录用于存放haproxy配置文件

[root@server1 haproxy]# pwd
/srv/salt/haproxy
[root@server1 haproxy]# ls
install.sls
[root@server1 haproxy]# mkdir files 

2.minion将配置文件传给master(因为master端没有haproxy的配置文件haproxy.cfg,而server1端在案例一时装过haproxy服务,生成了haproxy.cfg文件)

[root@server4 ~]# scp /etc/haproxy/haproxy.cfg server1:/srv/salt/haproxy/files

在这里插入图片描述
3.编辑配置文件haproxy.cfg

[root@server1 files]# vim haproxy.cfg   #编辑59行后面的内容如下
 59     stats uri /status   #新增加的内容
 60 
 61 #---------------------------------------------------------------------
 62 # main frontend which proxys to the backends
 63 #---------------------------------------------------------------------
 64 frontend  main *:80   #设置侦听端口为80
 65     default_backend             app
 66 backend app
 67     balance     roundrobin
 68     server  app1 172.25.83.2:8888 check   #设置后端服务器(因为之前server2上推送过httpd服务,且侦听端口为8888。所以这里写为172.25.83.2:8888)
 69     server  app2 172.25.83.3:80 check   #设置后端服务器(因为之前server3上推送过nginx服务,且侦听端口为80。所以这里写为172.25.83.3:80)

4.部署脚本

[root@server1 haproxy]# pwd
/srv/salt/haproxy
[root@server1 haproxy]# ls
files  install.sls
[root@server1 haproxy]# vim install.sls
haproxy-install:
  pkg.installed:
    - pkgs:
      - haproxy
 
  file.managed:
    - name: /etc/haproxy/haproxy.cfg
    - source: salt://haproxy/files/haproxy.cfg

  service.running:
    - name: haproxy
    - reload: True
    - watch:
      - file: haproxy-install

5.执行推送

[root@server1 haproxy]# salt server4 state.sls haproxy.install

6.minion端查看,minion(server4)的侦听端口80是否已经打开。并在web界面输入172.25.83.4/status查看状态界面
在这里插入图片描述
在这里插入图片描述
7.server2端编辑/var/www/html/index.html文件,server3端编辑/usr/local/nginx/html/index.html文件,便于测试

[root@server2 ~]# vim /var/www/html/index.html
<h1>server2</h1>
[root@server3 ~]# vim /usr/local/nginx/html/index.html
<h1>server3</h1>

8.web界面输入172.25.83.4进行haproxy负载均衡的测试:
在这里插入图片描述
刷新一次网页

在这里插入图片描述
9.停掉server2的httpd服务或server3的nginx服务,再次进行测试:

可以看到只有server3出现,server2不再出现。

在这里插入图片描述
再次刷新网页

在这里插入图片描述
查看server4的状态图,可以看到server2对应的app1显示红色,即已经挂掉
在这里插入图片描述10.重启server2端的httpd服务,再次进行测试:

[root@server2 ~]# systemctl start httpd   #或者再次高级推送:salt '*' state.highstate;或者给server2再次推送httpd服务:salt server2 state.sls httpd.service

可以看到serve2和server3轮循出现,频率是1:1

查看server4的状态图,可以看到server2对应的app1显示绿色,即已经恢复

在这里插入图片描述

haproxy配置完成

11.编辑之前编写的top.sls文件,高级推送,即给server1推送haproxy服务,server2推送httpd服务,server3推送nginx服务,server4推送haproxy服务。

[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# ls
_grains  haproxy  httpd  nginx  top.sls  users
[root@server1 salt]# vim top.sls 
base:
  'server1':
    - haproxy.install
 
  'server4':
    - haproxy.install
 
  'server2':
    - httpd.service
 
  'server3':
    - nginx.service

[root@server1 salt]# salt '*' state.highstate

在这里插入图片描述
在server1查看haproxy服务对应的80端口是否已经打开
在这里插入图片描述在server2端查看httpd服务对应的8888端口是否已经打开
在这里插入图片描述
在server3端查看nginx服务对应的80端口是否已经打开
在这里插入图片描述
在server4端查看haproxy服务对应的80端口是否已经打开
在这里插入图片描述
12.web界面输入172.25.83.1进行haproxy负载均衡的测试,并查看状态图:

可以看到server2和server3轮循出现,频率是1:1。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值