salt实现haproxy的负载均衡部署

2024-05-16 02:38

本文主要是介绍salt实现haproxy的负载均衡部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置环境:

主机名ip服务
server1172.25.1.1salt-manster
server2172.25.1.2salt-minion , haproxy
server3172.25.1.3salt-minion , apache
server4172.25.1.4salt-minion ,nginx

关于环境中的nginx和apache部署脚本访问,此文章只实现haproxy的功能
https://blog.csdn.net/u010489158/article/details/81744757

关于haproxy自动部署的实现

(1)拓展yum源

[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release[salt]
name=salt
baseurl=http://172.25.1.250/rhel6
enabled=1
gpgcheck=0[HighAvailability]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=1[LoadBalancer]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1[ResilientStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1[ScalableFileSystem]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1

(2)创建haproxy脚本存放位置

[root@server1 ~]# cd /srv/salt/  
[root@server1 salt]# mkdir haproxy   #存放关于haproxy安装配置的脚本
[root@server1 salt]# cd haproxy/

(3)yum源配置文件的推送脚本

[root@server1 haproxy]# vim yum.sls    #推送拓展yum源额脚本
yum-install:file.managed:                 #对文件的管理 - name: /etc/yum.repos.d/rhel-source.repo   #将source中的文件放到name的位置- source: salt://haproxy/file/rhel-source.repocmd.run:    #执行shell命令- name: yum clean all

(4)haproxy的源码安装脚本

[root@server1 haproxy]# vim make.sls    #haproxy的安装脚本
include:- haproxy.yum        #包含haproxy目录下的yum.sls脚本
haproxy-install:       #关于haproxy的安装pkg.installed:       #利用yum进行安装  - pkgs:   #指定安装包- rpm-buildfile.managed:- name: /root/haproxy-1.6.11.tar.gz- source: salt://haproxy/file/haproxy-1.6.11.tar.gzcmd.run:      #运行shell命令- name: yum install rpm-build && cd /root && rpmbuild -tb haproxy-1.6.11.tar.gz && tar zxf haproxy-1.6.11.tar.gz && cd /rpmbuild/RPMS/x86_64/ && rpm -ivh haproxy-1.6.11-1.x86_64.rpm- create: /etc/haproxy     #如果此目录存在则不执行安装

(5) haproxy用户的建立脚本

[root@server1 users]# cd /srv/salt/users
[root@server1 users]# vim haproxy.sls  #创建haproxy用户
haproxy-group:   #用户组的建立group.present:- name: haproxy- gid: 200haproxy-user:  #用户的建立user.present:- name: haproxy- uid: 200- gid: 200- shell: /sbin/nologin- createhome: False- home: /usr/local/nginx

(6)haproxy服务的启动和配置文件脚本

[root@server1 haproxy]# vim service.sls   #关于服务启动的脚本
include:   #包含haproxy中的make.sls  和 users下的haproxy.sls- haproxy.make- users.haproxy
/etc/haproxy/haproxy.cfg:     #客户端的目录id,将source中的文件拷贝到此ID位置file.managed:- source: salt://haproxy/file/haproxy.cfg
haproxy-service:   #关于haproxy的服务启动service.running:- enable: True   #开机自动启动- name: haproxy   #haproxy服务- reload: True   #如果watch中的文件发生修改则进行reload- watch:    #监控file中的文件- file: /etc/haproxy/haproxy.cfg- require:- user: haproxy

(7)关于file目录中的内容

[root@server1 file]# ls    #file目录中存放了haproxy的压缩包,haproxy的配置文件,拓展yum源的配置文件
haproxy-1.6.11.tar.gz  haproxy.cfg  rhel-source.repo

<1> haproxy.cfg文件

[root@server1 file]# cat haproxy.cfg 
# This is a sample configuration. It illustrates how to separate static objects
# traffic from dynamic traffic, and how to dynamically regulate the server load.
#
# It listens on 192.168.1.10:80, and directs all requests for Host 'img' or
# URIs starting with /img or /css to a dedicated group of servers. URIs
# starting with /admin/stats deliver the stats page.
#globalmaxconn         10000stats socket    /var/run/haproxy.stat mode 600 level adminlog             127.0.0.1 local0uid             200gid             200chroot          /var/emptydaemon# The public 'www' address in the DMZ
frontend publicbind            *:80 name clear#bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pemmode            httplog             globaloption          httplogoption          dontlognullmonitor-uri     /monitorurimaxconn         8000timeout client  30sstats uri       /admin/stats#use_backend     static if { hdr_beg(host) -i img }#use_backend     static if { path_beg /img /css   }default_backend static  #默认将访问发送到static的后端服务器群# The static backend backend for 'Host: img', /img and /css.
backend staticmode            httpbalance         roundrobinoption prefer-last-serverretries         2option redispatchtimeout connect 5stimeout server  5s#option httpchk  HEAD /favicon.icoserver          statsrv1 172.25.1.3:80 check inter 1000  #定义后端的服务器server          statsrv2 172.25.1.4:80 check inter 1000# the application servers go here
backend dynamicmode            httpbalance         roundrobinretries         2option redispatchtimeout connect 5stimeout server  30stimeout queue   30soption httpchk  HEAD /login.phpcookie          DYNSRV insert indirect nocachefullconn        4000 # the servers will be used at full load above this number of connectionsserver          dynsrv1 192.168.1.1:80 minconn 50 maxconn 500 cookie s1 check inter 1000server          dynsrv2 192.168.1.2:80 minconn 50 maxconn 500 cookie s2 check inter 1000server          dynsrv3 192.168.1.3:80 minconn 50 maxconn 500 cookie s3 check inter 1000server          dynsrv4 192.168.1.4:80 minconn 50 maxconn 500 cookie s4 check inter 1000

<2>rhel-source.repo文件

[root@server1 file]# cat rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release[salt-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6
enabled=1
gpgcheck=0

(8)编写全局推送文件,一键推送所有节点

[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# vim top.sls 
base:'server2':- haproxy.service'server3':- apache.install'server4':- nginx.service[root@server1 salt]# salt '*' state.highstate   #高级推送

(9)测试

<1>server1访问server2(haproxy),实现httpd和nginx的轮询

[root@server1 ~]# curl 172.25.1.2
this is apache
[root@server1 ~]# curl 172.25.1.2
this is nginx!!!!
[root@server1 ~]# curl 172.25.1.2
this is apache
[root@server1 ~]# curl 172.25.1.2
this is nginx!!!!

<2>各个节点的服务已经自动开启

[root@server2 ~]# netstat  -nutlp |grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      7535/haproxy        
[root@server3 ~]# netstat  -nutlp |grep 80
tcp        0      0 :::80                       :::*                        LISTEN      2650/httpd  
[root@server4 mnt]# netstat  -nutlp |grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      10438/nginx    

这篇关于salt实现haproxy的负载均衡部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993635

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P