pos机域名不可用,想学会MyCat高可用集群搭建

 新闻资讯2  |   2023-06-19 09:40  |  投稿人:pos机之家

网上有很多关于pos机域名不可用,想学会MyCat高可用集群搭建的知识,也有很多人为大家解答关于pos机域名不可用的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!

本文目录一览:

1、pos机域名不可用

pos机域名不可用

一、集群架构1.MyCat实现读写分离架构

在我前面的文章, 我已经讲解过了通过MyCat来实现MySQL的读写分离, 从而完成MySQL集群的负载均衡 , 如下面的结构图:

但是以上架构存在问题 , 由于MyCat中间件是单节点的服务, 前端客户端所有的压力过来都直接请求这一台MyCat , 存在单点故障。所以这个时候, 我们就需要考虑MyCat的集群 ;

2.MyCat集群架构

通过MyCat来实现后端MySQL的负载均衡 , 通过HAProxy再实现MyCat集群的负载均衡 ;

HAProxy 负责将请求分发到 MyCat 上,起到负载均衡的作用,同时 HAProxy 也能检测到 MyCat是否存活,HAProxy 只会将请求转发到存活的 MyCat 上。如果一台 MyCat 服务器宕机,HAPorxy 转发请求时不会转发到宕机的 MyCat 上,所以 MyCat 依然可用。

HAProxy介绍:

HAProxy 是一个开源的、高性能的基于TCP(第四层)和HTTP(第七层)应用的负载均衡软件。 使用 HAProxy可以快速、可靠地实现基于TCP与HTTP应用的负载均衡解决方案。

具有以下优点:

可靠性和稳定性好, 可以与硬件级的F5负载均衡服务器媲美 ;处理能力强, 最高可以通过维护4w-5w个并发连接, 单位时间处理的最大请求数达到2w个 ;支持多种负载均衡算法 ;有功能强大的监控界面, 通过此页面可以实时了解系统的运行情况 ;

但是, 上述的架构也是存在问题的, 因为所以的客户端请求都是先到达HAProxy, 由HAProxy再将请求再向下分发, 如果HAProxy宕机的话, 就会造成整个MyCat集群不能正常运行, 依然存在单点故障。

3.MyCat的高可用集群

图解说明:

HAProxy 实现了 MyCat 多节点的集群高可用和负载均衡,而 HAProxy 自身的高可用则可以通过Keepalived 来实现。因此,HAProxy 主机上要同时安装 HAProxy 和 Keepalived,Keepalived 负责为该服务器抢占 vip(虚拟 ip),抢占到 vip 后,对该主机的访问可以通过原来的 ip访问,也可以直接通过 vip访问。Keepalived 抢占 vip 有优先级,在 keepalived.conf 配置中的 priority 属性决定。但是一般哪台主机上的Keepalived服务先启动就会抢占到vip,即使是slave,只要先启动也能抢到(要注意避免Keepalived的资源抢占问题)。HAProxy 负责将对 vip 的请求分发到 MyCat 集群节点上,起到负载均衡的作用。同时 HAProxy 也能检测到 MyCat 是否存活,HAProxy 只会将请求转发到存活的 MyCat 上。如果 Keepalived+HAProxy 高可用集群中的一台服务器宕机,集群中另外一台服务器上的 Keepalived 会立刻抢占 vip 并接管服务,此时抢占了 vip 的 HAProxy 节点可以继续提供服务。如果一台 MyCat 服务器宕机,HAPorxy 转发请求时不会转发到宕机的 MyCat 上,所以 MyCat 依然可用。

综上:MyCat 的高可用及负载均衡由 HAProxy 来实现,而 HAProxy 的高可用,由 Keepalived 来实现。

keepalived介绍:

Keepalived是一种基于VRRP协议来实现的高可用方案,可以利用其来避免单点故障。 通常有两台甚至多台服务器运行Keepalived,一台为主服务器(Master), 其他为备份服务器, 但是对外表现为一个虚拟IP(VIP), 主服务器会发送特定的消息给备份服务器, 当备份服务器接收不到这个消息时, 即认为主服务器宕机, 备份服务器就会接管虚拟IP, 继续提供服务, 从而保证了整个集群的高可用。VRRP(虚拟路由冗余协议-Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP 协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器 IP(一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如果工作正常的话就是 MASTER,或者是通过算法选举产生。MASTER 实现针对虚拟路由器 IP 的各种网络功能,如 ARP 请求ICMP,以及数据的转发等;其他设备不拥有该虚拟 IP,状态是 BACKUP,除了接收 MASTER 的 VRRP 状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP 将接管原先 MASTER 的网络功能。VRRP 协议使用多播数据来传输 VRRP 数据VRRP 数据使用特殊的虚拟源 MAC 地址发送数据而不是自身网卡的 MAC 地址,VRRP 运行时只有 MASTER 路由器定时发送 VRRP 通告信息,表示 MASTER 工作正常以及虚拟路由器 IP(组),BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信息,各 BACKUP 将宣告自己成为 MASTER,发送通告信息,重新进行 MASTER 选举状态。

二、高可用集群搭建1.部署环境规划2.MySQL主从复制搭建A.master在master 的配置文件(/usr/my.cnf)中,配置如下内容:

#mysql 服务ID,保证整个集群环境中唯一 server-id=1 #mysql binlog 日志的存储路径和文件名 log-bin=/var/lib/mysql/mysqlbin #设置logbin格式 binlog_format=STATEMENT #是否只读,1 代表只读, 0 代表读写 read-only=0 #指定同步的数据库 binlog-do-db=db01 binlog-do-db=db02 binlog-do-db=db03123456789101112执行完毕之后,需要重启Mysql:

service mysql restart ;1创建同步数据的账户,并且进行授权操作:

grant replication slave on *.* to 'itcast'@'%' identified by 'itcast'; flush privileges;123查看master状态:

show master status;1

字段含义:

File : 从哪个日志文件开始推送日志文件 Position : 从哪个位置开始推送日志 Binlog_Do_DB : 指定需要同步的数据库123B.slave在 slave 端配置文件中,配置如下内容:

#mysql服务端ID,唯一 server-id=2 #指定binlog日志 log-bin=/var/lib/mysql/mysqlbin #启用中继日志 relay-log=mysql-relay123456执行完毕之后,需要重启Mysql:

service mysql restart;1执行如下指令 :

change master to master_host= '192.168.192.157', master_user='itcast', master_password='itcast', master_log_file='mysqlbin.000002', master_log_pos=120;1

指定当前从库对应的主库的IP地址用户名密码从哪个日志文件开始的那个位置开始同步推送日志

开启同步操作

start slave; show slave status;12停止同步操作

stop slave;1C.测试验证

create database db01; user db01; create table user( id int(11) not null auto_increment, name varchar(50) not null, sex varchar(1), primary key (id) )engine=innodb default charset=utf8; insert into user(id,name,sex) values(null,'Tom','1'); insert into user(id,name,sex) values(null,'Trigger','0'); insert into user(id,name,sex) values(null,'Dawn','1');12345678910111213143.MyCat安装配置A.schema.xml

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="ITCAST" checkSQLschema="true" sqlMaxLimit="100"> <table name="user" dataNode="dn1" primaryKey="id"/> </schema> <dataNode name="dn1" dataHost="localhost1" database="db01" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.192.157:3306" user="root" password="itcast"> <readHost host="hostS1" url="192.168.192.158:3306" user="root" password="itcast" /> </writeHost> </dataHost> </mycat:schema>1234567891011121314B.server.xml

<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">ITCAST</property> </user> <user name="test"> <property name="password">123456</property> <property name="schemas">ITCAST</property> </user>123456789

两台MyCat服务, 做相同的配置 ;

4.HAProxy安装配置A.安装准备好HAProxy安装包,传到/root目录下

haproxy-1.5.16.tar.gz1解压到/usr/local/src目录下

tar -zxvf haproxy-1.5.16.tar.gz -C /usr/local/src1进入解压后的目录,查看内核版本,进行编译

cd /usr/local/src/haproxy-1.5.16 uname -r make TARGET=linux2632 PREFIX=/usr/local/haproxy ARCH=x86_64 # TARGET=linux310,内核版本,使用uname -r查看内核,如:2.6.32-431.el6.x86_64,此时该参数就为linux2632; # ARCH=x86_64,系统位数; # PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。1234567编译完成后,进行安装

make install PREFIX=/usr/local/haproxy1安装完成后,创建目录

mkdir -p /usr/data/haproxy/1创建HAProxy配置文件

vim /usr/local/haproxy/haproxy.conf

globallog 127.0.0.1 local0 maxconn 4096 chroot /usr/local/haproxy pidfile /usr/data/haproxy/haproxy.piduid 99 gid 99 daemon node mysql-haproxy-01 description mysql-haproxy-01 defaults log global mode tcp option abortonclose option redispatch retries 3 maxconn 2000 timeout connect 50000ms timeout client 50000ms timeout server 50000ms listen proxy_status bind 0.0.0.0:48066 mode tcp balance roundrobin server mycat_1 192.168.192.157:8066 check server mycat_2 192.168.192.158:8066 check frontend admin_stats bind 0.0.0.0:8888 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123123 stats hide-version stats admin if TRUE12345678910111213141516171819202122232425262728293031323334353637

内容解析如下 :

#global 配置中的参数为进程级别的参数,通常与其运行的操作系统有关global#定义全局的syslog服务器, 最多可定义2个; local0 是日志设备, 对应于/etc/rsyslog.conf中 的配置 , 默认收集info级别日志 log 127.0.0.1 local0 #log 127.0.0.1 local1 notice #log loghost local0 info #设定每个haproxy进程所接受的最大并发连接数 ; maxconn 4096 #修改HAproxy工作目录至指定的目录并在放弃权限之前执行chroot操作, 可以提升haproxy的安全级别 chroot /usr/local/haproxy #进程ID保存文件 pidfile /usr/data/haproxy/haproxy.pid #指定用户ID uid 99 #指定组ID gid 99 #设置HAproxy以守护进程方式运行 daemon #debug #quiet node mysql-haproxy-01 ## 定义当前节点的名称,用于 HA 场景中多 haproxy 进程共享同一 个 IP 地址时 description mysql-haproxy-01 ## 当前实例的描述信息 #defaults:用于为所有其他配置段提供默认参数,这默认配置参数可由下一个"defaults"所重新设定 defaults #继承global中的log定义 log global #所使用的处理模式(tcp:四层 , http:七层, health:状态检查,只返回OK) ### tcp: 实例运行于纯 tcp 模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对 7 层报文做任何类型的检查,此为默认模式 ### http:实例运行于 http 模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与 RFC 模式兼容的请求都会被拒绝 ### health:实例运行于 health 模式,其对入站请求仅响应“OK”信息并关闭连接,且不会记录任 何日志信息 ,此模式将用于相应外部组件的监控状态检测请求 mode tcp#当服务器负载很高的时候,自动结束掉当前队列处理时间比较长的连接 option abortonclose #当使用了cookie时,haproxy将会将请求的后端服务器的serverID插入到cookie中,以保证会话的 session持久性,而此时,后端服务器宕机,但是客户端的cookie不会刷新,设置此参数,将会将客户请求 强制定向到另外一个后端server上,以保证服务的正常。 option redispatch retries 3 # 前端的最大并发连接数(默认为 2000) maxconn 2000 # 连接超时(默认是毫秒,单位可以设置 us,ms,s,m,h,d) timeout connect 5000 # 客户端超时时间 timeout client 50000 # 服务器超时时间 timeout server 50000 #listen: 用于定义通过关联“前端”和“后端”一个完整的代理,通常只对 TCP 流量有用 listen proxy_status bind 0.0.0.0:48066 # 绑定端口 mode tcp balance roundrobin # 定义负载均衡算法,可用于"defaults"、"listen"和"backend"中,默认为轮询 #格式: server <name> <address> [:[port]] [param*] # weight : 权重,默认为 1,最大值为 256,0 表示不参与负载均衡 # backup : 设定为备用服务器,仅在负载均衡场景中的其他 server 均不可以启用此 server # check : 启动对此 server 执行监控状态检查,其可以借助于额外的其他参数完成更精细的设定 # inter : 设定监控状态检查的时间间隔,单位为毫秒,默认为 2000,也可以使用 fastinter 和 downinter 来根据服务器端专题优化此事件延迟 # rise : 设置 server 从离线状态转换至正常状态需要检查的次数(不设置的情况下,默认值为 2) # fall : 设置 server 从正常状态转换至离线状态需要检查的次数(不设置的情况下,默认值为 3) # cookie : 为指定 server 设定 cookie 值,此处指定的值将会在请求入站时被检查,第一次为此值挑选的 server 将会被后续的请求所选中,其目的在于实现持久连接的功能# maxconn: 指定此服务器接受的最大并发连接数,如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列,以等待其他连接被释放 server mycat_1 192.168.192.157:8066 check inter 10s server mycat_2 192.168.192.158:8066 check inter 10s # 用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理 # HAProxy 的状态信息统计页面 frontend admin_stats bind 0.0.0.0:8888 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123123 stats hide-version stats admin if TRUE1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677

HAProxy的负载均衡策略:

B.启动访问启动HAProxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf1查看HAProxy进程

ps -ef|grep haproxy1访问

http://192.168.192.162:8888/admin

界面:

5.Keepalived安装配置A.安装配置上传安装包到Linux

alt + p --------> put D:/tmp/keepalived-1.4.5.tar.gz1解压安装包到目录 /usr/local/src

tar -zxvf keepalived-1.4.5.tar.gz -C /usr/local/src1安装依赖插件

yum install -y gcc openssl-devel popt-devel1进入解压后的目录,进行配置,进行编译

cd /usr/local/src/keepalived-1.4.5 ./configure --prefix=/usr/local/keepalived123进行编译,完成后进行安装

make && make install1运行前配置

cp /usr/local/src/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/ mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/src/keepalived-1.4.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/12345修改配置文件 /etc/keepalived/keepalived.conf

Master:

global_defs { notification_email { javadct@163.com }notification_email_from keepalived@showjoy.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id haproxy01 vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 }vrrp_script chk_haproxy { script "/etc/keepalived/haproxy_check.sh"interval 2 weight 2 }vrrp_instance VI_1 { #主机配MASTER,备机配BACKUP state MASTER #所在机器网卡 interface eth1 virtual_router_id 51 #数值越大优先级越高 priority 120 advert_int 1 authentication { auth_type PASS auth_pass 1111 }## 将 track_script 块加入 instance 配置块 track_script { chk_haproxy ## 检查 HAProxy 服务是否存活 }virtual_ipaddress { #虚拟IP 192.168.192.200 } }1234567891011121314151617181920212223242526272829303132333435363738394041

BackUP:

global_defs { notification_email { javadct@163.com }notification_email_from keepalived@showjoy.com smtp_server 127.0.0.1 smtp_connect_timeout 30#标识本节点 router_id haproxy02 vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 }# keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级 vrrp_script chk_haproxy { # 检测 haproxy 状态的脚本路径 script "/etc/keepalived/haproxy_check.sh" #检测时间间隔 interval 2 #如果条件成立,权重+2 weight 2 }vrrp_instance VI_1 { #主机配MASTER,备机配BACKUP state BACKUP #所在机器网卡 interface eth1 virtual_router_id 51 #数值越大优先级越高 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 }## 将 track_script 块加入 instance 配置块 track_script { chk_haproxy ## 检查 HAProxy 服务是否存活 }virtual_ipaddress { #虚拟IP 192.168.192.200} }123456789101112131415161718192021222324252627282930313233343536373839404142434445编写检测haproxy的shell脚本 haproxy_check.sh

#!/bin/bash A=`ps -C haproxy --no-header | wc -l` if [ $A -eq 0 ];then /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf echo "haproxy restart ..." &> /dev/null sleep 1 if [ `ps -C haproxy --no-header | wc -l` -eq 0 ];then /etc/init.d/keepalived stop echo "stop keepalived" &> /dev/null fi fi123456789101112131415161718192021B.启动测试启动Keepalived

service keepalived start1登录验证

mysql -uroot -p123456 -h 192.168.192.200 -P 480661

以上就是关于pos机域名不可用,想学会MyCat高可用集群搭建的知识,后面我们会继续为大家整理关于pos机域名不可用的知识,希望能够帮助到大家!

转发请带上网址:http://www.poszjia.com/newsone/70313.html

你可能会喜欢:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 babsan@163.com 举报,一经查实,本站将立刻删除。