haproxy负载均衡两个后端httpd和mysql

前端主机:172.16.71.1,后端主机:172.16.71.4172.16.71.5

前端主机安装haproxy

yum install haproxy

vim /etc/haproxy/haproxy.cfg

global

   log         127.0.0.1 local2

   chroot      /var/lib/haproxy
   pidfile     /var/run/haproxy.pid
   maxconn     4000
   #errorfile 503 /etc/haproxy/errorpages/503.html
   user        haproxy
   group       haproxy
   daemon

   # turn on stats unix socket
   stats socket /var/lib/haproxy/stats

defaults
   mode                    tcp         # 默认为http,若要负载均衡MySQL,要换成tcp
   log                     global
   option                  httplog
   option                  dontlognull
   option http-server-close
   option forwardfor       except 127.0.0.0/8 header X-Client
   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                 30000
frontend main *:80   #可以直接写成*:80,也可以写成下面一行这样,bind *:80
   #bind *:80
   maxconn 6000
   acl invalid_src src 172.16.251.57 # 定义acl非法源地址
   acl adminapp path_beg -i /admin # 定义acl起始路径,-i表示不区分大小写
   acl static path_end -i .jpg .gif .png .jpeg .css .js .html  # 定义acl结尾路径,-i表示不区分大小写
   acl static path_beg /images /imgs /stylesheets /javascripts  # 定义acl起始路径,-i表示不区分大小写
   block if invalid_src adminapp # 如果符合acl invalid_src条件则禁止访问。
   use_backend staticsrvs if static # 如果符合acl static条件,则使用后端主机staticsrvs
   default_backend dynamicsrvs # 默认使用后端主机dynamicsrvs

# 上面的功能主要是动静分离

listen stats *:9022
   stats enable # 开启stats功能
   stats uri /admin?hastats # 定义stats uri
   stats realm Haproxy\ admin\ area # stats提示
   stats auth admin:magedu # 定义stats认证账户
   stats hide-version # 隐藏版本信息
   stats admin if TRUE # 始终启用stats admin

backend dynamicsrvs
#   balance roundrobin
   balance roundrobin  # 采用轮询方式负载均衡
   hash-type consistent # hash方式采用一致性hash算法
#   option httpchk GET / HTTP/1.1\r\nHost:\
#   http-check expect status 200
   server web1 172.16.71.4:80 check weight 2 inter 3000 rise 1 fall 2 cookie web1 # 定义后端server 名称 地址+端口,检查,权重,检查间隔(ms),如果检查成功几次则启用,如果检查失败几次则停用,添加的cookie内容。
backend staticsrvs
   cookie SRV insert indirect nocache
   server web2 172.16.71.5:80 check cookie web2 maxconn 2000  # 定义server 名称 地址+端口,检查,cookie添加内容,最大并发连接数。

frontend mysql
   bind *:3306
   log global
#   acl invalid_src src 172.16.71.4
#   tcp-request connection reject if invalid_src
   mode tcp
   default_backend mysrvs

backend mysrvs
   balance leastconn
   server mysql1 172.16.71.4:3306 check
   server mysql2 172.16.71.5:3306 check
# 后端MySQL服务器内要有相同的账号密码权限等内容。

添加支持https

vim /etc/haproxy/haproxy.cfg

frontend sslconn
   bind *:443 ssl crt /etc/haproxy/certs/haproxy.pem
   default_backend dynamicsrvs

# 生成证书
cd /etc/pki/CA/
(umask 077;openssl genrsa -out private/cakey.pem 2048 )
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
touch index.txt
echo 00 > serial

cd /etc/haproxy/
mkdir certs
(umask 077;openssl genrsa -out haproxy.key 2048)
openssl req -new -key haproxy.key -out haproxy.csr
openssl ca -in haproxy.csr -out haproxy.crt
cat haproxy.crt haproxy.key >haproxy.pem

mv haproxy.pem c

原创文章,作者:wangshuai,如若转载,请注明出处:http://www.178linux.com/68249

(1)
wangshuaiwangshuai
上一篇 2017-02-12 18:03
下一篇 2017-02-12 22:26

相关推荐

  • SSH原理与运用:远程登录

    如果本地用户名与远程用户名一致,登录时可以省略用户名。 1 $ ssh host SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。 1 $ ssh –p 2222 user@host 上面这条命令表示,ssh直接连接远程主机的2222端口。 三、中间人攻击 SSH之所以能够保证安全,原因在于它…

    Linux干货 2017-08-14
  • shell脚本编程之if条件判断与for、while、until循环

    一、if语句 语法: if 测试条件1 ; then        分支1 elif  测试条件2; then        分支2 … else&nbsp…

    Linux干货 2015-08-24
  • 内核编译流程和自动化安装

    内核编译         在特定的情况我们机器上面有些硬件特性需要利用起来,但是我们现成的这个内核没有开启这个功能,那就需要重新编译,把这个功能模块加进来,或者打到vmlinux中的核心文件里面。比如ntfs功能,默认系统没有启用此功能,但是系统是带这个功能的,编译的时候时候可以…

    Linux干货 2016-09-18
  • mysql复制与备份

    备份策略: 完全+差异+binlog 完全+增量+binlog binlog最好能实时备份到另一个节点上。 完全备份,多久一次? 数据变化量:有20%,建议使用完全备份。 可用的备份存储空间: 数据变化量很大,可以每天做一个完全备份,每周做一次增量备份。 数据变化量不大,可以每月做一次完全备份,每天做一次增量或者差异。 数据 备份工具: mysqldump:…

    Linux干货 2016-12-05
  • linux系统上命令使用格式及常见命令

    [root@localhost ~]# date -d ‘2017-07-06 00:00:00 ‘  用上面这条指令讲解命令使用格式 date command  -d 是参数,参数有可选参数,必选参数,在参数前必选加上- ,还是以这条指令为列,-d可以写成–date,如果写成date,date前面必选…

    Linux干货 2017-08-19
  • yum详解及源码包的编译安装

    yum的功能:     在我们使用rpm包安装程序时,各个程序包之间可能存在非常严重的依赖关系,这就导致我们在安装一个包的同时还需要安装其他存在依赖关系的包,因此我们可以使用rpm包的前端管理工具yum,可通过yum所支持的文件共享机制来解决各个rpm包之间的依赖关系。 yum仓库的配置文件:   …

    Linux干货 2016-08-25