zoukankan      html  css  js  c++  java
  • haproxy

    负载均衡的mariadb集群搭建

    集群介绍:

    Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 

    主要功能:

    • 同步复制
    • 所有节点可以同时读写数据库
    • 自动的节点成员控制,失效节点自动被清除
    • 新节点加入数据自动复制
    • 真正的并行复制,行级
    • 用户可以直接连接集群,使用感受上与MySQL完全一致

    优势:

    • 因为是多主,所以不存在Slave lag(延迟)
    • 不存在丢失交易的情况
    • 同时具有读和写的扩展能力
    • 更小的客户端延迟
    • 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同

    缺点:

    • 不支持POP/SMTP协议
    • 不支持SPDY协议
    • 不支持HTTP cache功能。
    • 重载配置的功能需要重启进程,虽然也是soft restart,但没有reaload更为平滑和友好。
    • 多进程模式支持不够好
    haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen
    1.global:  (全局配置主要用于设定义全局参数,属于进程级的配置,通常和操作系统配置有关)
    2.default : (配置默认参数,这些参数可以被用到frontend,backend,Listen组件)
    在此部分中设置的参数值,默认会自动引用到下面的frontend、backend、listen部分中,因引,某些参数属于公用的配置,只需要在defaults部分添加一次即可。而如果frontend、backend、listen部分也配置了与defaults部分一样的参数,Defaults部分参数对应的值自动被覆盖。
    3.frontend:( 接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend)
    frontend是在haproxy 1.3版本以后才引入的一个组件,同时引入的还有backend组件。通过引入这些组件,在很大程度上简化了haproxy配置文件的复杂性。forntend可以根据ACL规则直接指定要使用的后端backend
    4.backend : (后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器)
    在HAProxy1.3版本之前,HAProxy的所有配置选项都在这个部分中设置。为了保持兼容性,haproxy新的版本依然保留了listen组件配置试。两种配置方式任选一中
    5.Listen : (Fronted和backend的组合体) 比如haproxy实例状态监控部分配置
     

    添加web监控

    #defaults下添加并且修改端口号为80
    stats refresh 30s
    stats uri /status
    stats realm baison-test-Haproxy
    stats auth admin:admin

    配置步骤:

      1.安装haproxy:yum install haproxy

      2.编辑/etc/haproxy/haproxy.cfg

        修改内容如下:

        

    global
         log         192.168.254.40 local2
         log         192.168.254.40 local3 notice
     
         chroot      /var/lib/haproxy
         pidfile     /var/run/haproxy.pid   #进程文件存放位置
         maxconn     4000                   
         user        haproxy
         group       haproxy
         nbproc      1              #指定启动的haproxy进程个数,只能
    defaults
         log                     global     #引入global定义的日志格式
         option                  tcplog     #日志类型为tcp日志格式(httplog为http日志格式)
         option                  dontlognull#不记录健康检查日志信息
         option                  redispatch #
         retries                 3          #3次连接失败就认为服务器不可用
         timeout client          1m         #设置客户超时时间
         timeout server          1m      #设置服务器查实时间
         maxconn                 4000       #最大连接数
    
    listen  mariadb-galera
         bind 192.168.254.30:3399           #绑定haproxy代理IP
         mode tcp   #(7层代理http,4层代理tcp)  
         balance     leastconn              #设置负载均衡方式(默认为轮询roundrobin,leastconn为最小连接数模式)
         server  db1 192.168.254.30:3306 check   #添加监听的数据库集群的节点
         server  db2 192.168.254.31:3306 check
         server  db3 192.168.254.39:3306 check

      3.mysql --host 192.168.254.40 --port 3399 -uroot -proot #注意连接端口为3399,是haproxy服务器的监听端口

      4.插入一条数据:

        insert into students(name,age) value ('user1',19);

        Query OK, 1 row affected (0.19 sec)

        说明没有问题

  • 相关阅读:
    概念辨析:Spring中@AutoWired和@Bean的区别
    打牢基础知识,避免采坑
    golang服务端编程
    如何避免写bug的一些实例和技巧
    常见数学问题的解题思路
    App开发需要了解的基本技术
    vue项目webpack打包
    vue项目中使用lottie动画
    js函数-参数默认值
    powershell操作excel
  • 原文地址:https://www.cnblogs.com/fengzi7314/p/10417367.html
Copyright © 2011-2022 走看看