范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

关于Linux下HAProxy自动化部署的一些笔记整理

  写在前面学习  OKD  ,里面的路由组件通过 HAproxy 实现所以这里学习 HAproxy,博文内容涉及 手工部署  HAproxy 编写  Ansible  角色自动部署 HAproxy 理解不足小伙伴帮忙指正
  傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波
  HAProxy  是一种免费、非常快速且可靠的反向代理,可为基于 TCP 和 HTTP 的应用程序提供 高可用性、 负载平衡和代理。它特别适用于流量非常大的网站,并为世界上访问量最大的网站中的很大一部分提供支持。多年来,它已成为事实上的标准开源负载均衡器,现在随大多数主流 Linux 发行版一起提供,并且通常默认部署在云平台中。
  HAProxy  核心团队并行维护多个版本。从1.8 版本开始,每年发布两个主要版本。第一个数字通常表示重大更改(配置格式等) ,但实际上很少更改。第二位数字表示新功能 。两者构成一个分支。这些数字后面会出现一个额外的数字,表示错误修复版本。
  对应负载均衡来讲性能对比:  LVS > HAProxy > Nginx  ,一般情况下 HAProxy 和Nginx  做七层代理,因为可以会话保持,LVS 做四层的负载均衡.手动安装配置┌──[root@liruilongs.github.io]-[~] └─$rpm -ql haproxy || yum -y install yum -y install haproxy18.x86_64
  安装版本 ┌──[root@vms.154.liruilongs.github.io]-[~] └─$haproxy18 -v HA-Proxy version 1.8.27-493ce0b 2020/11/06 Copyright 2000-2020 Willy Tarreau rpm
  安装之后我们来分析一下配置文件,配置注释写的很清楚,完整的配置文件配置我们可以参考  http://haproxy.1wt.eu/download/1.8/doc/configuration.txt
  作为一个代理服务器,配置相对简单。 ┌──[root@vms.154.liruilongs.github.io]-[~] └─$rpm -qc haproxy18 /etc/haproxy18/haproxy.cfg /etc/logrotate.d/haproxy18 /etc/sysconfig/haproxy18
  修改配置文件,配置文件默认有一个配置 Demo。直接修改就可以,同时默认做了动静分离的配置,不同的版本配置文件略有差异,所以要以对应的配置 Demo 为准, ┌──[root@vms.154.liruilongs.github.io]-[~] └─$cat /etc/haproxy18/haproxy.cfg #--------------------------------------------------------------------- # Example configuration for a possible web application.  See the # full configuration options online. # #   https://www.haproxy.org/download/1.8/doc/configuration.txt # #---------------------------------------------------------------------  #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global     # to have these messages end up in /var/log/haproxy.log you will     # need to:     #     # 1) configure syslog to accept network log events.  This is done     #    by adding the "-r" option to the SYSLOGD_OPTIONS in     #    /etc/sysconfig/syslog     #     # 2) configure local2 events to go to the /var/log/haproxy.log     #   file. A line like the following can be added to     #   /etc/sysconfig/syslog     #     #    local2.*                       /var/log/haproxy.log     #     log         127.0.0.1 local2      chroot      /var/lib/haproxy18     pidfile     /var/run/haproxy18.pid     maxconn     4000     user        haproxy     group       haproxy     daemon      # turn on stats unix socket     stats socket /var/lib/haproxy18/stats  #--------------------------------------------------------------------- # common defaults that all the "listen" and "backend" sections will # use if not designated in their block #--------------------------------------------------------------------- defaults     mode                    http     log                     global     option                  httplog     option                  dontlognull     option http-server-close     option forwardfor       except 127.0.0.0/8     option                  redispatch     retries                 3     timeout http-request    10s     timeout queue           1m     timeout connect         10s     timeout client          1m     timeout server          1m     timeout http-keep-alive 10s     timeout check           10s     maxconn                 3000  #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main     bind *:5000     acl url_static       path_beg       -i /static /images /javascript /stylesheets     acl url_static       path_end       -i .jpg .gif .png .css .js      use_backend static          if url_static     default_backend             app  #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static     balance     roundrobin     server      static 127.0.0.1:4331 check  #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app     balance     roundrobin #  可以的负载方式 static-rr,rdp-cookie,hdr, url_param ,url,  source,leastconn        server  app1 192.168.29.152:5001 check      server  app2 192.168.26.152:5002 check  #server 关键字,指服务器 #web1,web2 为服务器名,可以和主机名相同,也可以不相同 #192.168.2.100:80  真实后端服务器的地址和访问端口 #check  健康检查的关键字 listen haproxystats     bind  *:5009     stats refresh 30s     stats uri /stats     stats realm Haproxy Manager     stats auth admin:admin
  这里在原来的配置文件中加了监控页面。启动服务 ┌──[root@vms.154.liruilongs.github.io]-[~] └─$systemctl restart haproxy18.service
  然后我们需要做一些准备工作。对应的负载机器使用 python 自带的 httpServer 模块发布服务
  192.168.26.152:5002 ┌──[root@vms152.liruilongs.github.io]-[~/vms152.liruilongs.github.io] └─$touch 192.168.26.152:5002 ┌──[root@vms152.liruilongs.github.io]-[~/vms152.liruilongs.github.io] └─$coproc  python -m SimpleHTTPServer 5002 [1] 22913
  192.168.29.152:5001 [root@vms152 vm15]# touch 192.168.29.152:5001 [root@vms152 vm15]# coproc python -m SimpleHTTPServer 5001 [1] 14384
  当前主机提供静态文件  192.168.26.154:4331 ┌──[root@vms.154.liruilongs.github.io]-[~] └─$coproc  python -m SimpleHTTPServer 4331 [1] 9841
  访问测试,默认为加权轮询 ┌──[root@liruilongs.github.io]-[~] └─$ curl 192.168.26.154:5000 -s | grep "
  • 192.168.26.152:5002 ┌──[root@liruilongs.github.io]-[~] └─$ curl 192.168.26.154:5000 -s | grep "
  • 192.168.29.152:5001 ┌──[root@liruilongs.github.io]-[~] └─$   健康检查,把 192.168.26.152:5002 的服务干掉┌──[root@vms152.liruilongs.github.io]-[~/vms152.liruilongs.github.io] └─$kill %1   负载全部到了 192.168.29.155:5001 ┌──[root@liruilongs.github.io]-[~] └─$ curl 192.168.26.154:5000 -s | grep "
  • 192.168.29.152:5001 ┌──[root@liruilongs.github.io]-[~] └─$ curl 192.168.26.154:5000 -s | grep "
  • 192.168.29.152:5001 ┌──[root@liruilongs.github.io]-[~] └─$ curl 192.168.26.154:5000 -s | grep "
  • 192.168.29.152:5001 ┌──[root@liruilongs.github.io]-[~] └─$   监控页面查看   在这里插入图片描述 Ansible自动化部署角色编写   安装比较简单,没有其他的逻辑,所以角色编写简单,这里如果涉及防火墙之类,需要添加角色依赖   角色创建 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible-galaxy init role-haproxy18 --init-path ./roles/ - Role role-haproxy18 was created successfully ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible-galaxy list | grep ha - role-haproxy18, (unknown version)   任务执行,访问测试 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$echo "192.168.26.154" > haproxy_list ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible-playbook deploy_haproxy.yaml -i haproxy_list ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$curl 192.168.26.154:5000 -s | grep /a
  • 192.168.29.152:5001   在这里插入图片描述   角色任务执行的剧本 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat deploy_haproxy.yaml - name: Ensure HAProxy is deployed hosts: all force_handlers: True roles: - role: role-haproxy18 haproxy_port: 5000 haproxy_appservers: - name: 192.168.26.152 ip: 192.168.26.152 backend_port: 5002 - name: 192.168.29.152 ip: 192.168.29.152 backend_port: 5001   主任务文件 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat roles/role-haproxy18/tasks/main.yml --- # tasks file for role-haproxy18 - name: config aliyun repo yum_repository: name: aliyunrepo description: aliyun repo baseurl: http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck: no # tasks file for haproxydd - name: Ensure haproxy packages are present yum: name: - haproxy18 - socat state: present - name: Ensure haproxy is started and enabled service: name: haproxy18 state: started enabled: yes - name: Ensure haproxy configuration is set template: src: haproxy.cfg.j2 dest: /etc/haproxy18/haproxy.cfg notify: reload haproxy   处理器文件 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat roles/role-haproxy18/handlers/main.yml --- # handlers file for role-haproxy18 - name: restart haproxy service: name: haproxy18 state: restarted - name: reload haproxy service: name: haproxy18 state: reloaded   默认变量 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat roles/role-haproxy18/defaults/main.yml --- # defaults file for role-haproxy18 # Log-level for HAProxy logs haproxy_log_level: info # Port exposed to clients haproxy_port: 80 # Name for the default backend haproxy_backend_name: app # Port backend is exposed to haproxy_backend_port: 80 # The appservers variable is a list # of backend servers that provide # the web service that is proxied # haproxy. Each server must define: # name, address, port. Below is # and example structure: # haproxy_appservers: [] # - name: serverb.lab.example.com # ip_address: 1.2.3.4 # port: 5000 # - name: serverc.lab.example.com # ip_address: 1.2.3.5 # port: 5000 # The default is no defined backend servers. haproxy_appservers: [] # Haproxy Manager haproxy_stats_port: 29999 stats_url: /stats stats_user: admin stats_pass: admin # Socket used to communicate with haproxy service. DO NOT CHANGE haproxy_socket: /var/run/haproxy.sock   配置文件模板文件 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat roles/role-haproxy18/templates/haproxy.cfg.j2 #--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # https://www.haproxy.org/download/1.8/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the "-r" option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2 {{ haproxy_log_level }} chroot /var/lib/haproxy18 pidfile /var/run/haproxy18.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket {{ haproxy_socket }} level admin #--------------------------------------------------------------------- # common defaults that all the "listen" and "backend" sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main bind *:{{ haproxy_port }} # acl url_static path_beg -i /static /images /javascript /stylesheets # acl url_static path_end -i .jpg .gif .png .css .js # use_backend static if url_static default_backend {{ haproxy_backend_name }} #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- #backend static # balance roundrobin # server static 127.0.0.1:4331 check #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend {{ haproxy_backend_name }} balance roundrobin {% for server in haproxy_appservers %} server {{ server.name }} {{ server.ip }}:{{ server.backend_port }} check {% endfor %} listen haproxystats bind *:{{ haproxy_stats_port }} stats refresh 30s stats uri {{ stats_url }} stats realm Haproxy Manager stats auth {{ stats_user }}:{{ stats_pass }} ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ 博文参考   https://www.haproxy.org/

  • IPO观察丨百果园第四次冲击上市,市场分散加盟店超9成等困境难解红星资本局了解到,11月16日,港交所披露了深圳百果园实业(集团)股份有限公司(以下简称百果园)的上市申请书。据悉,这是百果园第四次递交上市申请书。今年5月2日,百果园曾向港交所提英锦赛8强对阵出炉丁俊晖死磕火箭,司机大战魔术师,央视直播北京时间11月18日凌晨,斯诺克英锦赛结束了正赛第二轮另外四场比赛的争夺,8强全部产生。随之,四分之一决赛对阵形势也出炉。球迷们期盼的第30次丁奥会将如期上演,央视将直播本场比赛。火箭对阵步行者!休城主控背伤出战存疑,尼克斯迎生涯首次先发?北京时间11月18日,休斯顿火箭队即将从明天开始开启主场作战模式,未来几场比赛火箭队都是主场作战,虽然本赛季火箭队的3场胜利,其中有2场是在客场取得的,但是在主场比赛的时候,火箭队荣耀8011月23日,我来了,荣耀70再见,我先降价了众所周知,荣耀手机在国内市场的影响力还是非常高,大多数消费者也都知道荣耀曾经是华为的子品牌,虽然两者已经分家,但荣耀从只有3。8的国内市场份额到如今接近20,说明用户还是非常信赖,苏宁易购与泸州老窖深化战略合作达成10亿元年的成长计划酒逢知己千杯少,刚刚过去的双11,白酒消费热再次受到市场关注。紧随其后的传统消费旺季元旦春节等节点性消费将进入白酒消费关键时期。近日,苏宁易购集团总裁任峻苏宁易购快消行业总裁兼家乐冲击西部第一?掘金队大将接连触发健康安全协议,战绩必然下滑北京时间11月18日,NBA常规赛,掘金队的战绩目前是9胜5负,跟太阳队的战绩一样,目前排名西部第三,不得不说掘金队崛起的速度极快,但是,现在有一个不好的消息,要暂缓掘金队的崛起速爱因斯坦为什么说,科学的尽头是神学?大家其实都误解了他的本意爱因斯坦曾说当科学家登上一座高山之后,发现神学家早都坐在那里。换而言之科学的尽头是神学。这样的言论从一个伟大的科学家口中说出来,你肯定跟我一样非常的疑惑。科学家们不应该是无神论者吗地球热量流失?研究表明地核正在冷却,速度比预想的要快这些年人类探索到的行星越多,就会愈加感慨还是地球更年轻具有活力,因为大部分行星的内核都已经冷却,这导致它们看起来死气沉沉,表面一片荒芜。内核冷却导致表面一片荒芜的火星可大家没想到,地球存在稳定反馈机制,实现自我温度调节,不担心全球气候变化?据环球科学报道,地球在数十亿年间经历了多次剧烈的气候变化,但生命一直在延续。长期以来,科学家猜想一种叫做硅酸盐风化的地质过程可能在调节地球碳循环方面扮演着重要的角色,可以根据二氧化韦布望远镜烈焰吞噬天空,400多光年外一个异世界即将诞生詹姆斯韦布空间望远镜又有新作了。L1527原恒星在周边星云中制造出的沙漏状特征。照片由韦布望远镜的近红外相机拍摄。沙漏上半部有一些气泡状的奇怪东西,它们可能是原恒星间歇性向外抛出的2021年天津高考选择题三2021年5月15日,天问一号探测器着陆火星取得成功,迈出了我国星际探测征程的重要一步,在火星上首次留下中国人的印记,天文一号探测器成功发射后,顺利被火星捕获,成为我国第一颗人造火
    2023年农产品行情及投资展望牛熊转折的起点2023年大豆期货行情及投资展望我们的观点202223年南美大豆单产恢复正常,全球大豆供过于求农民种植大豆有望继续保持盈利水平,但价格难以突破2022年创下的高点。全小屏旗舰手机,未来还会有市场吗?经常听到有人想买小屏手机。但是吧,愿意把手机做小的厂商,着实不太多。iPhonemini都被砍了,就剩小米和三星了估计。不过换个角度想。现在不是有折叠技术嘛,大手机折起来,不就小了跨境电商深度高性价比的商品将在国际市场产生巨大的吸引力,引领下一轮增长过去三年,跨境电商行业经历了野蛮式增长,亦承受了黑天鹅事件。Covid的加持下,电商成为消费者赖以生存的线上化渠道,跨境电商由此迎来史诗级繁荣,宅经济在国内外盛行与此同时,亚马逊封技巧篇算法小白如何快速且高效的刷力扣题?算法萌新在刷力扣时,虽然已有一些算法基础但仍然出现一题都做不出来的现象,经常有以下困惑1。代码写了又删删了又写,写到一半才发现逻辑走不通,没有整体思路。2。不能分析出题目需要用到什发展个人养老金助力资本市场机构化成熟化国民养老金融素养活动周Day7视频加载中21世纪经济报道记者唐婧北京报道12月15日23日,由南方财经全媒体集团21世纪经济报道21惠养老栏目倾力打造的首届国民养老金融素养活动周视频节目线上播出。12月23日,揭西税务税收赋能为制造业发展增添底气为助力县域企业发展壮大,实现地方经济高质量可持续发展,国家税务总局揭西县税务局(以下简称揭西县税务局)充分发挥税收职能作用,主动靠前服务,积极作为,精准宣传辅导税收优惠政策,着力营皖通高速研究报告核心路段潜力释放,分红提升彰显信心(报告出品方作者兴业证券,王春环张晓云)1皖通高速持有安徽省优质高速公路资产安徽皖通高速公路股份有限公司成立于1996年8月15日,1996年11月13日发行H股在香港联合交易所上山亭移动公司以三提升为抓手筑牢廉洁风险防控山亭移动公司以三提升为抓手推动嵌入式廉洁风险防控工作做细做实,使廉洁风险点真正嵌入到流程贯彻到员工落实到场景,形成全员防控风险的良好氛围。提升队伍建设,强化风险意识。通过抓好支部书落实低温津贴亟待法治保障评论随着全国多地气温骤降,低温津贴的话题再次受到关注。然而,由于有关低温津贴的规定散见于国家和各地的规定标准中,缺乏专门文件进行明确,这笔津贴年年呼吁,却年年遇冷,难以真正温暖户外俄乌最新12月23日美通过450亿对乌援助普京说爱国者不如S300俄乌最新12月23日美参院通过明年450亿对乌援助普京说爱国者不如S300原创小靠君极黑的夜202212232337晨雾转帖亲爱的读者朋友们,大家好,这是12月23日的俄乌战况研判加速绘出新蓝图!洪梅梅沙单元土地清表工作进入倒计时12月23日,洪梅镇梅沙单元7号地块启动新一轮拆除工作,预示着梅沙单元土地清表工作进入倒计时。洪梅镇党委委员杜汉雄率队现场指挥土地清表行动,镇拓展办农林水务局公安分局城管分局自然资