数据库应用:Mycat+HAProxy+Keepalived实现高可用

目录

一、理论

1.高可用

2.部署高可用

二、实验

1.Mycat+HAProxy+Keepalived实现高可用

三、问题

1.开启HA-Proxy失败

2. VMware 克隆linux 网卡UUID重复问题

3.keepalived状态报错

 四、总结


一、理论

1.高可用

(1)概述

Mycat

在实际项目中,Mycat服务也需要考虑高可用性,如果Mycat所在服务器出现宕机,或Mycat服务故障,需要有备机提供服务,需要考虑Mycat集群。

HAProxy

HAProxv足一个使用C语言编写的自由及开放源代码软件,共提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。

HAProxv运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连按数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处埋数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就足为什么他们必须进行
优化以使每个CPU时间片(Cycle)做更多的工作。
 

③Keepalived

Keepalived是一款专为LVS和HA设计的一款健康检查工具;支持故障自动切换、支持节点健康状态检查。

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群中各个服务节点的状态,后来又加入了可实现高可用VRRP功能。因此,Keepalived除了能够管理LVS集群外,还可以为其他服务(例如:Nginx、Haproxy、MySQL等)实现高可用。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRP出现的目的就是为了解决静态路由单点故障的问题,它能够保证当个别节点宕机时,整个网络可以不间断的运行
Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用。

 

(2)方案

使用HAProxy + Keepalived配合两台Mycat搭起Mycat集群,实现高可用性。HAProxy实现了Mycat多节点的集群高可用和负载均衡,而HAProxy自身的高可用则可以通过Keepalived 来实现。

2.部署高可用

(1)部署 HAProxy服务器

# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log /dev/log   local0 info
        log /dev/log   local0 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        redispatch
        option http-server-close
        #option forwardfor       except 127.0.0.0/8
        option                  redispatch
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          60s
        timeout server          60s
        timeout http-keep-alive 10s
        timeout check           10s
        timeout tunnel          1h
        timeout client-fin      30s
        maxconn                 3000
#       contimeout      5000
#       clitimeout      50000
#       srvtimeout      50000

# 绑定到keep1主机的本地网卡上,该页面为haproxy的统计页面,用于查看请求转发等状态
    listen admin_status 0.0.0.0:48800 ##VIP
    stats uri /admin-status ##统计页面
    stats auth admin:123456
    mode http
    option httplog
# 转发到mycat 8066业务端口,服务绑定在VIP上
    listen allmycat_service 192.168.204.23:8066 ##转发到 mycat 的 8066 端口,即 mycat 的服务端口
    mode tcp
    option tcplog
    option tcpka
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
    balance roundrobin
    server mycat_1 192.168.204.250:8066 check inter 5s rise 2 fall 3
    server mycat_2 192.168.204.251:8066 check inter 5s rise 2 fall 3

# 转发到mycat 9066管理端口,服务绑定在VIP上
    listen allmycat_admin 192.168.204.23:9066 ##转发到 mycat 的 9066 端口,及 mycat 的管理控制台端口
    mode tcp
    option tcplog
    option tcpka
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
    balance roundrobin
    # 为mycat主机提供状态check服务,5s检查一次
    server mycat_1 192.168.204.250:9066 check inter 5s rise 2 fall 3
    server mycat_2 192.168.204.251:9066 check inter 5s rise 2 fall 3
    #timeout server 20000isten  appli1-rewrite 0.0.0.0:10001

(2)重新定义Haproxy集群的日志

默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,我们在生产环境中一般单独定义出来。需要将haproxy的info及notice日志分别记录到不同的日志文件中。

① #修改haproxy主配置文件
vim /etc/haproxy/haproxy.cfg
-----------------------------------修改以下内容
global
	log /dev/log local0 info
	log /dev/log local0 notice
------------------------------------
 
② #重启服务
service haproxy restart
 
需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
③ #修改rsyslog配置文件
vim /etc/rsyslog.d/haproxy.conf
---------------------------------------------------------------------添加如下内容
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
--------------------------------------------------------------------------
 

这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。“&~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。

 
④ #创建目录、重启服务、查看验证
mkdir /var/log/haproxy/
systemctl restart rsyslog.service
 
tail -f /var/log/haproxy/haproxy-info.log			#查看haproxy的访问请求日志信息

(3)配置负载调度器(主keepalived服务器:192.168.204.70)

① #关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
② #安装服务
yum install ipvsadm keepalived -y 
 
③ #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
 
......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
}
 
vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
    priority 100
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass 123123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.204.23
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.204.23 8066 {
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式(NAT)
    lb_kind NAT
    persistence_timeout 50			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.204.70 8066 {
        weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			#connect_port 8066			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}
 
	real_server 192.168.204.100 8066 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			#connect_port 8066
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}
##删除后面多余的配置##
 
④ #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	
 

(4)配置负载调度器(备keepalived服务器:192.168.204.100)

配置与主服务器相似

① #关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
② #安装服务
yum install ipvsadm keepalived -y 
 
③ #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
 
......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_02
}
 
vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state BACKUP
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
    priority 99
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass 123123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.204.23
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.204.23 8066 {
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,NAT
    lb_kind NAT
    persistence_timeout 50			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.204.70 8066 {
        weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			#connect_port 8066			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}
 
	real_server 192.168.204.100 8066 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			#connect_port 8066
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}
##删除后面多余的配置##
 
④ #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	
 

(5)配置节点服务器(maycat1服务器:192.168.204.250)

① 解压
cd /opt
tar zxvf Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz
cp -r mycat /usr/local/

②配置环境变量
vim ~/.bash_profile
export MYCAT_HOME=/usr/local/mycat

置并刷新环境变量使得mycat可以补全

echo 'PATH=/usr/local/mycat/bin:$PATH' > /etc/profile.d/mycat.sh
source /etc/profile.d/mycat.sh
mycat start

③启动mycat
mycat start


④ 启动成功日志末尾会出现successfully,mycat只能通过查看日志的方式判断是否启动成功
tail -f /usr/local/mycat/logs/wrapper.log

⑤ 配置schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
 
        <schema name="mycatdb1" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <schema name="mycatdb2" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn2">
        </schema>
        <schema name="mycatdb3" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn3">
        </schema>
 
                <!-- auto sharding by id (long) -->
                <!--splitTableNames 启用<table name 属性使用逗号分割配置多个表,即多个表使用这个配置-->
<!--fetchStoreNodeByJdbc 启用ER表使用JDBC方式获取DataNode-->
                <!--table name="customer" primaryKey="id" dataNode="dn1,dn2" rule="sharding-by-intfile" autoIncrement="true" fetchStoreNodeByJdbc="true">
                        <childTable name="customer_addr" primaryKey="id" joinKey="customer_id" parentKey="id"> </childTable>
                </table-->
                <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"
                        /> -->
 
        <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
                /> -->
        <dataNode name="dn1" dataHost="localhost1" database="testdb1" />
        <dataNode name="dn2" dataHost="localhost1" database="testdb2" />
        <dataNode name="dn3" dataHost="localhost1" database="testdb3" />
        <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />
         <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />
        <dataNode       name="jdbc_dn2" dataHost="jdbchost" database="db2" />
        <dataNode name="jdbc_dn3"       dataHost="jdbchost" database="db3" /> -->
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="192.168.204.10" url="192.168.204.10:3306" user="root"  password="123456">
                    <readHost host="192.168.204.11" url="192.168.204.11:3306" user="root" password="123456" />
                    <readHost host="192.168.204.12" url="192.168.204.12:3306" user="root" password="123456" />
                </writeHost>
 
                <writeHost host="192.168.204.11" url="192.168.204.11:3306" user="root"  password="123456" />
 
                <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>


⑥ 配置server.xml
<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">mycatdb1,mycatdb2,mycatdb3</property>
		
		<!-- 表级 DML 权限设置 -->
		<!-- 		
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>
	<user name="user">
		<property name="password">user</property>
		<property name="schemas">mycatdb1,mycatdb2,mycatdb3</property>
		<property name="readOnly">true</property>
	</user>

⑦修改MyCat日志级别
vim log4j2.xml
第25行 level="debug"

⑧ 启动成功
tail -f /usr/local/mycat/logs/wrapper.log

⑨ 查看端口
netstat -an|grep 8066


⑩查看mycat进程
ps -ef|grep mycat

⑪登录mysql,查看逻辑库

[root@localhost ~]# mysql -uroot -p123456 -P8066 -h 192.168.204.250
mysql> show databases;
mysql> use mycatdb1;
mysql> show tables;
mysql> select * from t11;


(6)配置节点服务器(maycat2服务器:192.168.204.251)
maycat2服务器与mycat服务器基本一致
如需监控,以下配置文件需要修改:
vim /usr/local/mycat-web/mycat-web/WEB-INF/classes/mycat.properties

show.period=3000000
sqlonline.passwd=123456
zookeeper=192.168.204.251\:2181
sqlonline.user=root
sqlonline.server=192.168.204.251
mycat_warn_mail=[{"cc"\:"sohudo@mycat.io","index"\:1,"mangerPort"\:"465","smtpHost"\:"smtp.139.com","smtpPassword"\:"123456","smtpProtocol"\:"smtp","smtpUser"\:"agile_louie@139.com","to"\:"9183838@qq.com"}]

(7)安装并配置xinetd服务

需要在安装HAProxy的服务器上,安装xinetd服务来开启48700端口。

(1)在服务器命令行执行如下命令安装xinetd服务,如下所示。

yum install xinetd -y

(2)编辑/etc/xinetd.conf文件,如下所示。

vim /etc/xinetd.conf

检查文件中是否存在如下配置。

includedir /etc/xinetd.d

如果/etc/xinetd.conf文件中没有以上配置,则在/etc/xinetd.conf文件中添加以上配置;如果存在以上配置,则不用修改。

(3)创建/etc/xinetd.d目录,如下所示。

mkdir /etc/xinetd.d

注意:如果/etc/xinetd.d目录已经存在,创建目录时会报如下错误。

mkdir: cannot create directory `/etc/xinetd.d': File exists

可不必理会此错误信息。

(4)在/etc/xinetd.d目录下添加Mycat状态检测服务器的配置文件mycat_status,如下所示。

touch /etc/xinetd.d/mycat_status

(5)编辑mycat_status文件,如下所示。

vim /etc/xinetd.d/mycat_status

编辑后的mycat_status文件中的内容如下所示。

service mycat_status
{
flags = REUSE
socket_type = stream
port = 48700
wait = no
user = root
server =/usr/local/bin/mycat_check.sh
log_on_failure += USERID
disable = no
}


部分xinetd配置参数说明如下所示。

socket_type:表示封包处理方式,Stream为TCP数据包。

port:表示xinetd服务监听的端口号。

wait:表示不需等待,即服务将以多线程的方式运行。

user:运行xinted服务的用户。

server:需要启动的服务脚本。

log_on_failure:记录失败的日志内容。

disable:需要启动xinted服务时,需要将此配置项设置为no。

(6)在/usr/local/bin目录下添加mycat_check.sh服务脚本,如下所示。

touch /usr/local/bin/mycat_check.sh

(7)编辑/usr/local/bin/mycat_check.sh文件,如下所示。

vim /usr/local/bin/mycat_check.sh

编辑后的文件内容如下所示。

#!/bin/bash
mycat=`/usr/local/mycat/bin/mycat status | grep 'not running' | wc -l`
if [ "$mycat" = "0" ]; then
/bin/echo -e "HTTP/1.1 200 OK\r\n"
else
/bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n"
/usr/local/mycat/bin/mycat start
fi

为mycat_check.sh文件赋予可执行权限,如下所示。

chmod a+x /usr/local/bin/mycat_check.sh

(8)编辑/etc/services文件,如下所示。

vim /etc/services

在文件末尾添加如下所示的内容。

mycat_status  48700/tcp        # mycat_status

其中,端口号需要与在/etc/xinetd.d/mycat_status文件中配置的端口号相同。

(9)重启xinetd服务,如下所示。

service xinetd restart

(10)查看mycat_status服务是否成功启动,如下所示。
 netstat -antup|grep 48700

结果显示,两台服务器上的mycat_status服务器启动成功。

至此,xinetd服务安装并配置成功,即Mycat状态检查服务安装成功。

二、实验

1.Mycat+HAProxy+Keepalived实现高可用

(1)实验环境

HAProxy(master)、Keepalived(master):192.168.204.70

HAProxy(backup)、Keepalived(backup):192.168.204.100

Mycat1服务器:192.168.204.250,jdk1.6、Mycat-server-1.6.7.6  ,centos7
Mycat2服务器:192.168.204.251,jdk1.6、Mycat-server-1.6.7.6  ,centos7

Master 服务器:192.168.204.10,mysql5.7

Slave1 服务器:192.168.204.11,mysql5.7

Slave2 服务器:192.168.204.12,mysql5.7

(2)安装并配置xinetd服务

在服务器命令行执行如下命令安装xinetd服务,如下所示。

 编辑/etc/xinetd.conf文件,如下所示。

检查文件中是否存在如下配置

 创建/etc/xinetd.d目录,如下所示。

注意:如果/etc/xinetd.d目录已经存在,创建目录时会报如下错误。

在/etc/xinetd.d目录下添加Mycat状态检测服务器的配置文件mycat_status,如下所示。

 编辑mycat_status文件,如下所示。

编辑后的mycat_status文件中的内容如下所示。

 

 在/usr/local/bin目录下添加mycat_check.sh服务脚本,如下所示。

编辑后的文件内容如下所示。

 为mycat_check.sh文件赋予可执行权限,如下所示。

 编辑/etc/services文件,如下所示。

 

  重启xinetd服务,如下所示。

 查看mycat_status服务是否成功启动,如下所示。

(3)启动HAProxy

HAProxy(master)192.168.204.70

HAProxy(backup)192.168.204.100

 (4)启动Keepalived

Keepalived(master)192.168.204.70

Keepalived(backup)192.168.204.100

(5)启动Mycat

Mycat1服务器:192.168.204.250

Mycat2服务器:192.168.204.251

(6)远程登录验证

HAProxy(master)、Keepalived(master):192.168.204.70

 HAProxy(backup)、Keepalived(backup):192.168.204.100

 (7)查看高可用

http://192.168.204.70:48800/admin-status

 写入数据观察变化

 关闭mycat1,观察变化

三、问题

1.开启HA-Proxy失败

 (1)报错

开启 失败,错误描述:Failed to start SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularl

 (2)原因分析

忘记注释该服务自设置的根目录

 (3)解决方法

为了确定是否文件格式还存在问题,输入下面的命令:

[root@localhost run]# haproxy -f /etc/haproxy/haproxy.cfg -c
Configuration file is valid

注释该服务自设置的根目录

 

依然报错,检查网卡配置是否添加虚拟地址

 #配置虚拟IP地址(VIP:192.168.204.23)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
#删除UUID,dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
IPADDR=192.168.204.23
NETMASK=255.255.255.255
 
#重启网络服务、启动网卡
systemctl restart network
ifup ifcfg-ens33:0

 ③  Haproxy误报"xxx has no server available!"的消息

网络参数方面主要就是生产环境的内核TCP参数做过优化,生产环境之前在/etc/sysctl.conf 文件中做了如下优化:

[root@localhost haproxy]# vim /etc/sysctl.conf 

 看来这个是导致Haproxy在做健康检查时误报的原因,于是去掉上面的配置,重启生产环境的服务器,一切正常了。

 检查配置文件,注释

 

创建/var/lib/haproxy/stats文件

[root@localhost run]# mkdir -p /var/lib/haproxy
[root@localhost run]# touch /var/lib/haproxy/stats

再次启动,成功

[root@localhost run]# systemctl start haproxy
[root@localhost run]#  ps -ef | grep -i haproxy
nobody     3762      1  0 11:25 ?        00:00:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
root       3852   1988  0 11:32 pts/0    00:00:00 grep --color=auto -i haproxy

添加开机自启

2. VMware 克隆linux 网卡UUID重复问题

(1)问题

当使用 VMware 克隆 linux 主机时会发生克隆主机和原主机网卡 UUID 重复的问题,这样会对网络通信产生影响。

(2)原因分析

 UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。

只要保证每台主机的UUID独一无二即可,即为新的主机绑定新的 UUID。

(3)解决方法

生成新的uuid替换掉文件里的uuid号。

 第一步:生成新的uuid

[root@localhost /]# uuidgen

  第二步:替换网卡信息里的uuid号

[root@localhost /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

第三步:重启服务

[root@localhost /]# systemctl restart network

第四步:使用nmcli工具验证

[root@localhost /]# nmcli connection show

新UUID生效

3.keepalived状态报错

(1)报错

status keepalived.service

 (2)原因分析

If you want to allow /usr/sbin/haproxy to bind to network port 8066
                                              Then you need to modify the port type.
                                              Do
                                              # semanage port -a -t PORT_TYPE -p tcp 1080如果你先允许绑定到网络端口8066, 需要修改端口类型, 如下
semanage port -a -t PORT_TYPE -p tcp 8066 # 其中 PORT_TYPE 可选值为:commplex_main_port_t, http_cache_port_t, http_port_t.

(3)解决方法

# 在这里, 我们使用 http_port_t 类型, 即执行下面命令即可semanage port -a -t http_port_t -p tcp 8066

然后重启haproxy 即可

[root@localhost keepalived]# semanage port -a -t http_port_t -p tcp 8066
[root@localhost keepalived]# service keepalived status
[root@localhost keepalived]# service haproxy restart

 四、总结

HA-Proxy配置文件及启动:     

#配置文件
vim /etc/haproxy/haproxy.cfg

#重启服务
service haproxy restart

#查看状态
systemctl status haproxy.service
#添加开机自启
chkconfig --add haproxy

chkconfig --list haproxy

keepalived配置文件及启动:   

#配置文件
vim /etc/keepalived/keepalived.conf

#启动服务
systemctl start keepalived

#查看状态
service keepalived status

mycat补全命令及查看日志:

echo 'PATH=/usr/local/mycat/bin:$PATH' > /etc/profile.d/mycat.sh
source /etc/profile.d/mycat.sh
mycat start


tail -f /usr/local/mycat/logs/wrapper.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值