6.1.?复制和负载均衡示例

6.1.1. 复制模式配置
6.1.2. 复制模式下的负载均衡
6.1.3. 复制模式下的高可用

先建一个简单的示例环境,此环境如下表所示:

表?6.1.?uxpool复制和负载均衡示例环境

主机名称IP地址uxpoolUXDBSever实例名称数据库名称
ux57.com192.168.0.157已安装已安装test01uxdb
ux58.com192.168.0.158已安装已安装test02uxdb

这个数据库实例是在操作系统用户“UXDB”下,uxpool安装在/home/uxdb/uxpool目录下,uxdbsever是安装在/home/uxdb/uxdbinstall/dbsql/bin目录下。

6.1.1.?复制模式配置

uxpool的配置项很多,安装完成后有三个模板文件,都存放在安装目录的etc目录下,一般在配置之前,先拷贝这个模板文件,然后在此基础上进行配置。配置方法为进入/home/uxdb/uxpool/etc目录,执行以下命令(ux57.com和ux58.com分别配置):

cp pool_hba.conf.sample pool_hba.conf
cp uxpool.conf.sample uxpool.conf
cp pcp.conf.sample pcp.conf
  1. pcp.conf配置(ux57.com和ux58.com分别配置):

    • uxpool有一个用于管理的接口,名为PCP,可通过网络获取数据库的节点信息。要使用pcp命令必须进行用户认证。这种认证需要pcp.conf文件中定义一个用户名和密码。在这个文件中,用户名和密码成对地出现在每一行中,它们用冒号(:)隔开。密码的格式是用md5的哈希加密。如设置一个用户“UXDB”及密码“123456”时,会先计算密码的md5值,如使用UXDB用户,进入/home/uxdb/uxdbinstall/uxpool/bin目录下,执行命令:

      ./ux_md5 123456
    • 计算完md5后,进入/home/uxdb/uxdbinstall/uxpool/etc目录下pcp.conf文件中配置如下一行内容:

      uxdb:e10adc3949ba59abbe56e057f20f883e

      其中“e10adc3949ba59abbe56e057f20f883e”就是密码的md5值,如下图所示:

    • 执行命令../bin/ux_md5 -p -m -u uxdb pool_passwd 如下图所示。

  2. pool_hba.conf配置(ux57.com和ux58.com分别配置):

    pool_hba.conf是对登录用户进行验证的,要和uxdb的ux_hba.conf保持一致,要么都是trust,要么都是md5验证方式,这里采用了md5验证方式如下设置(test01和test02分别配置),进入/home/uxdb/uxdbinstall/uxpool/etc目录下配置如下:

  3. uxpool.conf配置(ux57.com和ux58.com分别配置):

    • 进入/home/uxdb/uxdbinstall/uxpool/etc目录下uxpool.conf文件,进行编辑。

    • uxpool.conf配置(ux57.com和ux58.com分别配置):

      # - uxpool Connection Settings -
      listen_addresses = '*'
      port = 9999
      pcp_listen_addresses = '*'
      pcp_port = 9898
      
      # - Backend Connection Settings -
      
      backend_hostname0 = 'ux57.com'    
      backend_port0 = 5432
      backend_weight0 = 1
      backend_data_directory0 = '/home/uxdb/uxdbinstall/dbsql/bin/test01'   #集群数据目录
      backend_flag0 = 'ALLOW_TO_FAILOVER'
      
      backend_hostname1 = 'ux58.com'  
      backend_port1 = 5432
      backend_weight1 = 1
      backend_data_directory1 = '/home/uxdb/uxdbinstall/dbsql/bin/ test02'  #集群数据目录
      backend_flag1 = 'ALLOW_TO_FAILOVER'
      
      # - Authentication -
      
      enable_pool_hba = on
      pool_passwd = 'pool_passwd'   #pool_passwd文件名
      
      pid_file_name = '/home/uxdb/uxdbinstall/uxpool/uxpool.pid'
      logdir = '/home/uxdb/uxdbinstall/uxpool/log'
      
      replication_mode = on   #复制开关
      load_balance_mode = on   #负载均衡开关
      # - Streaming -
      
      sr_check_period = 5
      sr_check_user = 'repuser'
      sr_check_password = '123456'
      sr_check_database = 'uxdb'
                                      
      #------------------------------------------------------------------------------
      # HEALTH CHECK GLOBAL PARAMETERS
      #------------------------------------------------------------------------------
      
      health_check_period = 10     #检查的周期
      health_check_timeout = 20    #指定做健康检查的超时时间, 
      health_check_user = 'uxdb'  #指定健康检查连接后端数据库的用户。
      health_check_password = '123456'  #指定做健康检查时,连接后端数据库的密码。
      health_check_database = 'uxdb'
      
      health_check_period0 = 10
      health_check_timeout0 = 20
      health_check_user0 = 'uxdb'
      health_check_password0 = '123456'
      health_check_database0 = 'uxdb'
      
      # - Enabling - 
      use_watchdog = on 
      
      # - Watchdog communication Settings - 
      wd_hostname = 'ux57.com' 
      
      wd_port = 9000 
      
      delegate_IP = 'uc60.com'  #虚拟IP配置
      
      if_cmd_path = '/sbin' 
      
      if_up_cmd = 'ifconfig ens33:0 inet $_IP_$ netmask 255.255.254.0' 
      
      if_down_cmd = 'ifconfig ens33:0 down' 
      
      arping_cmd = 'arping -fqbDUV -w 1 $_IP_$'
       
      wd_heartbeat_port = 9694
      wd_heartbeat_keepalive = 2
      wd_heartbeat_deadtime = 30
      heartbeat_destination0 = 'ux58.com'
      heartbeat_destination_port0 = 9694
      heartbeat_device0 = 'ens33'
      
      other_uxpool_hostname0 = 'ux58.com' #对端
      other_uxpool_port0 = 9999
      other_wd_port0 = 9000

      如果是uxdb-2.1.1.0之后的版本还需要进行如下配置:

      failover_when_quorum_exists = off
  4. 权限配置:

    如果两台机器之间为主备关系,用于主机宕机后的主备切换时,使用root用户登录,执行以下命令:

    [root@ux57 ~]# chmod u+s /sbin/ifconfig
    [root@ux57 ~]# chmod u+s /usr/sbin/
  5. 创建uxpool日志文件(ux57.com和ux58.com分别创建):

    进入/home/uxdb/uxdbinstall/uxpool目录下,创建目录:

    mkdir log
  6. 启动uxpool(ux57.com和ux58.com分别配置):

    进入/home/uxdb/uxdbinstall/uxpool/bin目录下,执行命令:

    ./uxpool -n  -D > /home/uxdb/uxdbinstall/uxpool/log/uxpool.log 2>&1 & 

6.1.2.?复制模式下的负载均衡

使用虚拟IP连接uxpool的端口9999,插入数据,发现两边数据库的数据相同,实现了负载均衡,情况模拟如下:

  1. 进入ux57.com主机 /home/uxdb/uxdbinstall/dbsql/bin目录下,执行命令:

    [uxdb@ux57 bin]$ ./uxbench -i
  2. 进入ux58.com主机 /home/uxdb/uxdbinstall/dbsql/bin目录下,查看数据,发现数据相同,实现了负载均衡。

    进入/home/uxdb/uxdbinstall/dbsql/bin目录下,执行命令:

    [uxdb@ux57 bin]$ ./uxsql -h uc60.com -p 9999
    uxdb=# \d

6.1.3.?复制模式下的高可用

模拟复制模式下,一台机器宕机后,两台机器分别通过虚拟IP连接uxpool时,可以正常访问,且插入数据后,两边的数据库数据相同,实现了复制功能,具体操作步骤如下:

  1. ux57.com机器,进入/home/uxdb/uxdbinstall/dbsql/bin目录下, 执行命令:

    ./ux_ctl -D  test01 stop
  2. 使用外网虚拟IP继续访问:

  3. 插入数据:

  4. 在ux58上查看,数据相同。

XML 地图 | Sitemap 地图