Linux下SaltStack案例—haproxy(五)——httpd(后端web服务器)+ningx(后端web服务器)+haproxy(实现两个后端web服务器的负载均衡)

续我的博文:https://mp.csdn.net/postedit/88882456。即ansible已经安装配置好

 

 

一、实验环境(rhel7.3版本)

1selinux和firewalld状态为disabled

2各主机信息如下:

主机ip
server1(master)—提供haproxy服务172.25.83.1
server2(minion)—提供之前推送的httpd服务172.25.83.2
server3(minion)—提供之前推送的nginx服务172.25.83.3
server4(minion)—提供haproxy服务172.25.83.4

3添加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为server1的minion(这里不再演示)

 

二、SaltStack部署及案例—haproxy

 

案例一:rpm部署安装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   #该目录的名字随意给。因为我这里是用来存放haproxy.cfg文件的,所以这里创建的目录的名字是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负载均衡的测试:

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

刷新一次网页

再次刷新网页

 

9.停掉server2的httpd服务或server3的nginx服务(我这里演示停掉server2的httpd服务),再次进行测试:

[root@server2 ~]# systemctl stop httpd
  • 可以看到只有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服务。(虽然之前已经给server2,server3,server4推送过,但是也没有关系)

[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。

刷新一次网页

再次刷新网页

 

13.停掉server2的httpd服务或server3的nginx服务(我这里演示停掉server3的nginx服务),再次进行测试:

[root@server3 ~]# systemctl stop nginx
  • 可以看到只有server2出现,server3不再出现。

再次刷新网页

  • 查看server4的状态图,可以看到server3对应的app2显示红色,即已经挂掉

 

14.重启server3端的nginx服务为,再次进行测试:

[root@server3 ~]# systemctl start nginx   #或者再次高级推送:salt '*' state.highstate;或者给server3再次推送nginx服务:salt server3 state.sls nginx.service
  • 可以看到serve2和server3轮循出现,频率是1:1

刷新一次网页

再次刷新网页

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

 


上面的实验做完之后,我们会发现一个问题:如果server1或server4的haproxy服务挂掉了(这里以server1为例),那么访问172.25.83.1和172.25.83.1/status就会报错,那么也就引入了下篇博文的keepalived高可用服务。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值