Ansible Role 高可用 之【haproxy】

Ansible Role: haproxy

安装haproxy

介绍

HAProxy是一种免费的,非常快速和可靠的解决方案,为基于TCP和HTTP的应用程序提供高可用性,负载平衡和代理。

官方网站:http://www.haproxy.org/
官方文档地址:http://cbonte.github.io/haproxy-dconv/
配置文件说明:https://www.haproxy.org/download/1.7/doc/management.txt

要求

此角色仅在RHEL及其衍生产品上运行。

测试环境

ansible 2.2.1.0
os Centos 6.7 X64

角色变量

software_files_path: "/opt/software"
software_install_path: "/usr/local"

haproxy_version: "1.7.5"

haproxy_file: "haproxy-{{ haproxy_version }}.tar.gz"
haproxy_file_path: "{{ software_files_path }}/{{ haproxy_file }}"
haproxy_file_url: "http://www.haproxy.org/download/{{ haproxy_version | splitext | first  }}/src/{{ haproxy_file }}"

haproxy_user: "haproxy"

haproxy_chroot: "{{ software_install_path }}/haproxy"
haproxy_conf_path: "{{ haproxy_chroot }}/conf"
haproxy_logspath: "/var/log/haproxy"

haproxy_socket: "/var/run/haproxy.sock"
haproxy_pid_file: "/var/run/haproxy.pid"

haproxy_build_target: 'linux26{{ "28"
                         if ( ansible_kernel.split("-")[0] | version_compare("2.6.28",">=", strict=True))
                         else "" }}'
haproxy_build_arch: "{{ ansible_machine }}"
haproxy_configure_command: "make TARGET={{ haproxy_build_target }} ARCH={{ haproxy_build_arch }} USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX={{ haproxy_chroot }}"

haproxy_maxconn: 60000
haproxy_ulimit: 200000
haproxy_nbproc: "{{ ansible_processor_vcpus | default(ansible_processor_count) }}"

# Frontend settings.
haproxy_frontend_name: "hafrontend"
haproxy_frontend_bind_address: "*"
haproxy_frontend_port: 80
haproxy_frontend_mode: "http"
haproxy_frontend_vars: []
# haproxy_frontend_vars: |
#  - 'option httpchk GET /ok.html'
#  - 'http-check expect status 200'

# Backend settings.
haproxy_backend_name: "habackend"
haproxy_backend_mode: "http"
haproxy_backend_balance_method: "roundrobin"
haproxy_backend_httpchk: "HEAD / HTTP/1.1\\r\\nHost:localhost"

# List of backend servers.
haproxy_backend_servers: []
# - name: app1
#   address: 192.168.0.1:80
# - name: app2
#   address: 192.168.0.2:80
#   check: "inter 5000 rise 2 fall 3"
#   backup: true
#   extra: "on-marked-down shutdown-sessions"
  
haproxy_backend_vars: []
# haproxy_backend_vars: |
#  - 'option httpchk GET /ok.html'
#  - 'http-check expect status 200'

haproxy_global_vars: []
# haproxy_global_vars:
#  - 'ssl-default-bind-ciphers ABCD+KLMJ:...'
#  - 'ssl-default-bind-options no-sslv3'
      
haproxy_defaults_vars: []
# haproxy_defaults_vars: |
#  - 'timeout client 1m'
#  - 'timeout server 1m'

haproxy_conf_extra: ""
# haproxy_conf_vars: |
#    frontend mysql
#        bind *:3306
#        mode tcp
#        log global
#        default_backend mysqlservers

haproxy_stats: true
haproxy_stats_bindport: 18080
haproxy_stats_auth: "admin:admin"
haproxy_stats_realm: "Haproxy\ Statistics"
haproxy_stats_allow_src: "{{ ansible_default_ipv4.network }}/{{ ansible_default_ipv4.netmask }}"
haproxy_stats_uri: "/admin?status"

ansible_python_interpreter: /usr/bin/python2.6

依赖

没有

github地址

https://github.com/kuailemy123/Ansible-roles/tree/master/haproxy

Example Playbook

tcp代理rabbitmq
- hosts: node2
  vars:
   - haproxy_frontend_port: 55672
   - haproxy_frontend_mode: "tcp"
   - haproxy_frontend_vars:
      - "option tcplog"
   - haproxy_backend_mode: "tcp"
   - haproxy_backend_servers:
       - name: "rabbitmq1"
         address: "192.168.77.129:5672"
       - name: "rabbitmq2"
         address: "192.168.77.130:5672"
       - name: "rabbitmq3"
         address: "192.168.77.131:5672"
  roles:
     - haproxy
     
http代理rabbitmq
- hosts: node2
  vars:
   - haproxy_frontend_port: 45672
   - haproxy_backend_servers:
       - name: "rabbitmq1"
         address: "192.168.77.129:15672"
       - name: "rabbitmq2"
         address: "192.168.77.130:15672"
       - name: "rabbitmq3"
         address: "192.168.77.131:15672"
  roles:
     - haproxy

使用

/etc/init.d/haproxy
Usage: haproxy {start|stop|restart|reload|condrestart|status|check}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,440评论 6 428
  • 太长了,还是转载吧...今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源...
    庞哈哈哈12138阅读 20,136评论 3 283
  • 孤独妄想症 文|小侄女 01 我一个人吃饭,一旅行,走走停停。 有人说,真正的成功者是孤独的。 不知道你有没有这样...
    大哥和小侄女阅读 504评论 0 0
  • 一 奇遇 当和米顶着一头乱糟糟的卷发,戴着他那松垮模糊的镜片冲进公交车站的时刻的时候,他心心念念的f路公车...
    曲琦only阅读 515评论 0 0
  • 20170227 周一 南昌 气温8-19度 轻度污染 忙碌的工作日即将开始。 昨天培训的主要内容是强制性排序和把...
    cai彩阅读 623评论 0 1