Mycat【Mycat高可用(安装配置HAProxy、安装配置Keepalived)】(八)-全面详解(学习总结---从入门到深化)

目录

Mycat高可用_安装配置HAProxy

Mycat高可用_安装配置Keepalived

复习:


Mycat高可用_安装配置HAProxy

安装配置HAProxy 

查看列表

yum list | grep haproxy

yum安装

yum -y install haproxy

修改配置文件

$ vim /etc/haproxy/haproxy.cfg

启动HAProxy

HAProxy配置文件

HAProxy配置文件主要由全局设定和代理设定两部分组成,包含5个域:global、default、frontend、backend、listen。

global

# 全局配置,定义haproxy进程的工作特性和全局配置
globallog         127.0.0.1 local2chroot     /var/lib/haproxy #chroot运行的路径pidfile     /var/run/haproxy.pid
#haproxy pid的存放位置maxconn     65536 #最大连接数nbproc     10ulimit-n   200000user       haproxy #haproxy的运行用户group       haproxy #haproxy的运行用户的所属组daemon #守护进程的方式在后台工作# turn on stats unix socketstats socket /var/lib/haproxy/stats

注意: 全局配置,通常是一些进程级别的配置,与操作系统相关。

default 

#-------------------------------------------
--------------------------
# common defaults that all the 'listen' and
'backend' sections will
# use if not designated in their block
#-------------------------------------------
--------------------------
defaultsmode                   http #默认使用的七层协议,也可以是tcp四层协议,如果配置为health,则表示健康检查,返回oklog                     globaloption                 tcplog #详细记录tcp日志option                 redispatchoption                 dontlognull #不记录健康检查的日志信息option                 forwardfor      retries                 3 #重试次数为3次,失败3次以后则表示服务不可用timeout http-request   5s #http请求超时时间,客户端建立连接5s但不请求数据的时候,关闭客户端连接timeout queue 10s #等待最大时间,表示等待最大时长为10stimeout connect         10s #连接超时时间,表示客户端请求转发至服务器所等待的时长为10stimeout client         30m #客户端超时时间,表示客户端非活跃状态的时间为30mintimeout server         30m #服务器超时时间,表示客户端与服务器建立连接后,等待服务器的超时时间为30mintimeout http-keep-alive 10s #持久连接超时时间,表示保持连接的超时时长为10stimeout check           10s #心跳检测超时时间,表示健康状态监测时的超时时间为10s

参数:

默认参数配置,主要是涉及的公共配置,在 defaults 中一次性添加。

frontend 、 backend 、 listen 未配置时,都可以默认 defaults 中的参 数配置。

若配置了,会覆盖。

frontend & backend 

frontend testbind *:8082default_backend   testoption httplogacl user-core path_beg /test/v1/user/use_backend user-core_server if user-core
# test
backend testmode httpbalance   roundrobinserver node1 10.xxx.xxx.1:7000 checkport 7000 inter 5000 rise 5 fall 5server node2 10.xxx.xxx.2:7000 checkport 7000 inter 5000 rise 5 fall 5
# user-core_server
backend user-core_servermode httpbalance roundrobinserver   node1 10.xxx.xxx.1:7001 checkport 7001 inter 5000 rise 5 fall 5server   node2 10.xxx.xxx.2:7001 checkport 7001 inter 5000 rise 5 fall 5 backup
frontend haproxy_statis_frontbind                     *:8081mode                     httpdefault_backend         statis_haproxybackend statis_haproxymode                     httpbalance                 roundrobinstats                   uri          /haproxy/statsstats                   auth         haproxy:zkK_HH@zzstats                   refresh      30sstats                   show-nodestats                   show-legendsstats                   hide-version

参数:

frontend 可以看作是前端接收请求的部分,内部指定后端;

backend 可以看作是后端服务接收请求的部分;

listen 

listen admin_statsbind   *:8080 #监听端口mode   httpoption httploglog     global#统计接口启用开关stats   enablemaxconn 10#页面刷新时长stats   refresh 30s  #haproxy ui访问后缀stats   uri /haproxy?stats  #认证时的realm,作为提示用的stats   realm haproxy  #认证用户名和密码stats   auth admin:admin  #隐藏HAProxy版本号stats   hide-version  #管理界面只有认证通过后才能在ui上进行管理stats   admin if TRUE  

参数: listen 是`frontend和backend的组合,haproxy的监控ui可以通 过这个进行配置。

向配置文件中插入以下配置信息,并保存

globallog 127.0.0.1 local0#log 127.0.0.1 local1 notice#log loghost local0 infomaxconn 4096chroot /var/lib/haproxypidfile /var/run/haproxy.pid#uid 99#gid 99daemon#debug#quiet
defaultslog globalmode tcpoption abortoncloseoption redispatchretries 3maxconn 2000timeout connect 5000timeout client 50000timeout server 50000
listen proxy_statusbind :48066mode tcpbalance roundrobinserver mycat_1 192.168.66.101:8066
check inter 10sserver mycat_2 192.168.66.102:8066
check inter 10s
frontend admin_statsbind :7777mode httpstats enableoption httplogmaxconn 10stats refresh 30sstats uri /adminstats auth admin:123123stats hide-versionstats admin if TRUE

 启动验证

/usr/local/haproxy/sbin/haproxy -f
/usr/local/haproxy/haproxy.conf

查看HAProxy进程

ps -ef|grep haproxy

打开浏览器访问 http://192.168.140.125:7777/admin#在弹出框输入

用户名: admin

密码:123123

验证负载均衡,通过HAProxy访问Mycat 

mysql -uroot -p123456 -h 192.168.66.101 -P48066

Mycat高可用_安装配置Keepalived

 高可用架构

查看列表 

yum list | grep keepalived

yum安装

 yum install -y keepalived

查看yum安装的配置文件

rpm -ql keepalived

修改主节点配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived global_defs {
## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTProuter_id baizhan ## 标识本节点的字条串,通常为 hostname
}
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。
## 如果脚本执行结果为 0,并且 weight 配置的值大于0,则优先级相应的增加。
## 如果脚本执行结果非 0,并且 weight 配置的值小于0,则优先级相应的减少。
## 其他情况,维持原本配置的优先级,即配置文件中
priority 对应的值。
vrrp_script chk_haproxy {script "/etc/keepalived/haproxy_check.sh" ## 检测haproxy 状态的脚本路径interval 2 ## 检测时间间隔weight 2 ## 如果条件成立,权重+2
}
## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {state MASTER ## 默认主设备(priority 值大的)和备用设备(priority 值小的)都设置为 BACKUP,## 由 priority 来控制同时启动情况下的默认主备,否则先启动的为主设备interface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth3virtual_router_id 35 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用,
## 相同的 VRID 为一个组,他将决定多播的 MAC 地址priority 120 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高nopreempt ## 主设备(priority 值大的)配置一
定要加上 nopreempt,否则非抢占也不起作用advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s## 设置验证信息,两个节点必须一致authentication {auth_type PASSauth_pass 1111 ## 真实生产,按需求对应该过来}## 将 track_script 块加入 instance 配置块track_script {chk_haproxy ## 检查 HAProxy 服务是否存活}## 虚拟 IP 池, 两个节点设置必须一样virtual_ipaddress {192.168.66.200}
}

修改备用节点配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {router_id baizhan
}
vrrp_script chk_haproxy {script  "/etc/keepalived/haproxy_check.sh"interval 2weight 2
}
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 35priority 110advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_haproxy}virtual_ipaddress {192.168.66.200}
}

编写 Haproxy 状态检测脚本

我们编写的脚本为/etc/keepalived/haproxy_check.sh (已在 keepalived.conf 中配置)

脚本要求:如果 haproxy 停止运行,尝试启动,如果无法启动则杀 死本机的 keepalived 进程,keepalied将虚拟 ip 绑定到 BACKUP 机器上。

内容如下:

mkdir -p /usr/local/keepalived/log

vi /etc/keepalived/haproxy_check.sh

#!/bin/bash
START_HAPROXY="/usr/sbin/haproxy start"
STOP_HAPROXY="/usr/sbin/haproxy stop"
LOG_FILE="/usr/local/keepalived/log/haproxy-check.log"
HAPS=`ps -C haproxy --no-header |wc -l`
date "+%Y-%m-%d %H:%M:%S" >> $LOG_FILE
echo "check haproxy status" >> $LOG_FILE
if [ $HAPS -eq 0 ];then
echo $START_HAPROXY >> $LOG_FILE
$START_HAPROXY >> $LOG_FILE 2>&1
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq
0 ];then
echo "start haproxy failed, killall
keepalived" >> $LOG_FILE
killall keepalived
fi
fi

复习:

 Mycat分片规则_按日期(天)分片

实现原理 

此规则为按天分片,设定时间格式、范围。

实现过程

创建示例表

#用户信息表
create table login_info(id int auto_increment comment '编号',user_id int comment '用户编号',login_date date comment '登录时间',primary key(id)
);

修改schema.xml配置文件

<table name="login_info" dataNode="dn1,dn2" rule="sharding_by_date" ></table>

修改rule.xml配置文件

<tableRule name="sharding_by_date"><rule><columns>login_date</columns><algorithm>shardingByDate</algorithm></rule>
</tableRule>

定义function

<function name="shardingByDate" class="io.mycat.route.function.PartitionByDate"><property name="dateFormat">yyyy-MM-dd</property><property name="sBeginDate">2040-01-01</property><property name="sEndDate">2040-01-04</property><property name="sPartionDay">2</property>
</function>

参数:

columns:分片字段,algorithm:分片函数

dateFormat :日期格式 sBeginDate :开始日期

sEndDate:结束日期,则代表数据达到了这个日期的分片后循环从开始分片插入

sPartionDay :分区天数,即默认从开始日期算起,分隔 2 天一个分区 

重启Mycat 

mycat restart

插入数据

insert into login_info(id,user_id,login_date) values(1,101,'2040-01-01');
insert into login_info(id,user_id,login_date) values(2,102,'2040-01-02');
insert into login_info(id,user_id,login_date) values(3,103,'2040-01-03');
insert into login_info(id,user_id,login_date) values(4,104,'2040-01-04');
insert into login_info(id,user_id,login_date) values(5,105,'2040-01-05');
insert into login_info(id,user_id,login_date) values(6,106,'2040-01-06');

实时学习反馈

1.Mycat技术中按日期进行分片如何设置分区天数___。

A dateFormat

B sBeginDate

C sEndDate

D sPartionDay

Mycat分片规则_全局序列

在实现分库分表的情况下,数据库自增主键已无法保证全局唯一。

解决方案 

本地文件

此方式Mycat将sequence配置到文件中,当使用到 sequence中的 配置后,Mycat会更下classpath中的 sequence_conf.properties 文件中sequence当前的值。

注意:

优点:本地加载,读取速度较快

缺点:抗风险能力差,Mycat 所在主机宕机后,无法读取本地文件。 

本地时间戳方式 

全局序列ID=64位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重 复累加) 换算成十进制为18位数的long类型,每毫秒可以并发12位 二进制的累加。

优缺点:

优点:配置简单

缺点:18位ID过长 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13104.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Angular的编程之旅

目录 1、简介 2、特点 2.1 横跨多种平台 2.2 速度与性能 2.3 美妙的工具 3、Angular 应用&#xff1a;知识要点 3.1 组件 3.2 模板 3.3 依赖注入 4、与其他框架的对比 1、简介 Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用。 A…

jvm对象创建和内存分配优化

一、创建对象过程 1、类加载检测 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。 …

Flask学习笔记(2)应用部署

本文将介绍如何部署Flask应用。   部署Flask应用&#xff0c;主要是要运用多线程与多进程&#xff0c;提高接口的并发能力。我们以下面的Python代码&#xff08;server.py&#xff09;为例进行演示&#xff1a; # -*- coding: utf-8 -*- import time import datetime from f…

密码学学习笔记(五):Hash Functions - 哈希函数1

简介 什么是密码学中的哈希函数&#xff1f; 哈希函数是一种快速算法&#xff0c;它接受任何长度的输入&#xff0c;并产生一个固定长度的随机输出&#xff0c;称为摘要(digest)&#xff0c;比如&#xff1a; MD4, MD5: 128-bit output (broken) •SHA-1: 160-bit output (b…

基于redhat发行版mysql8.0的卸载与重装mysql5.7

文章目录 一、软件的选择与下载二、卸载mysql8.01.查看my.cnf中的部署信息2.卸载mysql8.03.卸载完毕安装包后删除相关数据 三、mysql5.7的安装1.解压安装包2.初始化mysql数据库3.修改root密码 四、安装mysql5.7客户端附&#xff1a;创建数据库以及用户 本次案例是卸载mysql8.0然…

2个好用的ftp和ssh工具推介

为什么不用xshell和xftp,是不好用吗&#xff1f;xshell和xftp虽然好用&#xff0c;而且也有免费版&#xff0c;但是&#xff0c;一个方面使用有限制&#xff0c;再就是你看见这个报错的弹窗烦不烦&#xff1f; 一、ssh工具-WindTerm WindTerm[1] 是一个基于 C 开发的开源终端模…

使用大型语言模(LLM)构建系统(七):评估1

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程&#xff0c;我想和大家一起分享一下该门课程的一些主要内容。之前我们已经学习了下面这些知识&#xff1a; 使用大型语言模(LLM)构建系统(一)&#xff1a;分类使用大型语言模(LLM)构建系统(二):内容审核、…

3d渲染画面变形怎么办?

在用3dmax渲染图片时有时会遇到画面变形的情况&#xff0c;这个是什么原因呢&#xff1f;今天我们就来看看吧。 首先我们来看下变形的具体情况&#xff0c;再分析原因。可以看到整个画面都畸变了&#xff0c;呈现出上下拉伸的情况&#xff0c;能造成这个效果的&#xff0c;只有…

error: exportArchive: No signing certificate \“Mac Development\“ found

error: exportArchive: No signing certificate “Mac Development” found UNIAPP打包又遇到这个问题了, 证书过期续期的时候又遇到这个问题了(之前遇到过解决了,时间长忘了),记录一下,报错信息 error: exportArchive: No signing certificate \"Mac Development\"…

【毕业设计】爱琴海——基于HTML5的婚庆用品商城网页设计

一、内容简介 (一)背景与意义 “婚俗”是指结婚的风俗&#xff0c;各国各族人民按照自己的习俗&#xff0c;举行各具特色的婚礼&#xff0c;具有各自浓厚的民族独特风采。婚俗元素在是中国婚俗文化的媒介&#xff0c;承载了中华儿女对幸福和吉祥的追求。在中国婚俗文化的发展过…

基于CTFTraining在CTFd部署Web题目

下面要讲的东西是基于你已经使用CTFd搭建好了这样一个简易靶场 因为misc、crypto这些题目一般都是放附件&#xff0c;这个比较简单&#xff0c;直接做好在前端放上去就行 而部署web的题&#xff0c;我们需要在终端进行&#xff0c;这里我们使用docker-compose来进行部署 至于…

[MMDetection]COCO数据集可视化验证

在使用MMDetection训练之前&#xff0c;需要对图像进行可视化验证&#xff0c;验证数据和标签是否对齐。 # 数据集可视化 import os import matplotlib.pyplot as plt from PIL import Imageoriginal_images [] images [] texts [] plt.figure(figsize(16,12))image_paths …