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

news2024/11/15 15:29:45

目录

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进程的工作特性和全局配置
global
   log         127.0.0.1 local2
   chroot     /var/lib/haproxy #chroot运行的路径
   pidfile     /var/run/haproxy.pid
#haproxy pid的存放位置
   maxconn     65536 #最大连接数
   nbproc     10
   ulimit-n   200000
   user       haproxy #haproxy的运行用户
   group       haproxy #haproxy的运行用户的所属组
   daemon #守护进程的方式在后台工作
    # turn on stats unix socket
   stats socket /var/lib/haproxy/stats

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

default 

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

参数:

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

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

若配置了,会覆盖。

frontend & backend 

frontend test
   bind *:8082
   default_backend   test
   option httplog
   acl user-core path_beg /test/v1/user/
   use_backend user-core_server if user-core
# test
backend test
   mode http
   balance   roundrobin
   server node1 10.xxx.xxx.1:7000 checkport 7000 inter 5000 rise 5 fall 5
   server node2 10.xxx.xxx.2:7000 checkport 7000 inter 5000 rise 5 fall 5
# user-core_server
backend user-core_server
   mode http
   balance roundrobin
   server   node1 10.xxx.xxx.1:7001 checkport 7001 inter 5000 rise 5 fall 5
   server   node2 10.xxx.xxx.2:7001 checkport 7001 inter 5000 rise 5 fall 5 backup
frontend haproxy_statis_front
     bind                     *:8081
     mode                     http
     default_backend         statis_haproxybackend statis_haproxy
     mode                     http
     balance                 roundrobin
     stats                   uri          /haproxy/stats
     stats                   auth         haproxy:zkK_HH@zz
     stats                   refresh      30s
     stats                   show-node
     stats                   show-legends
     stats                   hide-version

参数:

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

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

listen 

listen admin_stats
       bind   *:8080 #监听端口
       mode   http
       option httplog
       log     global
       #统计接口启用开关
       stats   enable
       maxconn 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可以通 过这个进行配置。

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

global
 log 127.0.0.1 local0
 #log 127.0.0.1 local1 notice
 #log loghost local0 info
 maxconn 4096
 chroot /var/lib/haproxy
 pidfile /var/run/haproxy.pid
 #uid 99
 #gid 99
 daemon
 #debug
 #quiet
defaults
 log global
  mode tcp
 option abortonclose
 option redispatch
 retries 3
 maxconn 2000
 timeout connect 5000
 timeout client 50000
 timeout server 50000
listen proxy_status
   bind :48066
       mode tcp
       balance roundrobin
       server mycat_1 192.168.66.101:8066
check inter 10s
       server mycat_2 192.168.66.102:8066
check inter 10s
frontend admin_stats
 bind :7777
   mode http
   stats enable
   option httplog
   maxconn 10
   stats refresh 30s
   stats uri /admin
   stats auth admin:123123
   stats hide-version
   stats 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 服务。建议用独立的监控或第三方 SMTP
 router_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 地址所在的网络接口相同,我的是 eth3
 virtual_router_id 35 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用,
## 相同的 VRID 为一个组,他将决定多播的 MAC 地址
 priority 120 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
 nopreempt ## 主设备(priority 值大的)配置一
定要加上 nopreempt,否则非抢占也不起作用
 advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
 ## 设置验证信息,两个节点必须一致
 authentication {
 auth_type PASS
 auth_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 2
 weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 35
    priority 110
    advert_int 1
    authentication {
    auth_type PASS
    auth_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.coloradmin.cn/o/732131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全漏洞的检测利用

安全漏洞的检测&利用 一、安全漏洞的基本概念1.1、什么是漏洞1.2、漏洞的简单理解1.3、微软的RPC漏洞与蠕虫病毒1.4、微软经典的蓝屏漏洞1.5、Heartbleed&#xff08;心脏滴血&#xff09;漏洞1.6、破壳漏洞CVE-2014-62711.7、漏洞的危害1.8、漏洞的成因1.9、漏洞的信息的组…

mysql工具sequel pro

一、安装sequel pro 下载地址&#xff1a;https://www.sequelpro.com/ 需要翻墙 二、安装mysql 下载地址&#xff1a;https://www.mysql.com/ 傻瓜式安装即可 记得设置密码 三、配置环境变量 &#xff08;1&#xff09;打开终端 &#xff08;2&#xff09;open ~/.bash_profile…

【送书福利-第十五期】计算机全栈高手到底该怎么发展?

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、前言二、书籍介绍1、《前端…

0代码训练GPT-5?MIT微软证实GPT-4涌现自我纠错能力迭代

我们都知道&#xff0c;大模型具有自省能力&#xff0c;可以对写出的代码进行自我纠错。 这种自我修复背后的机制&#xff0c;究竟是怎样运作的&#xff1f; 对代码为什么是错误的&#xff0c;模型在多大程度上能提供准确反馈&#xff1f; 近日&#xff0c;MIT和微软的学者发…

【数据分析 - 基础入门之NumPy①】Anaconda安装及使用

知识目录 前言一、 Anaconda是什么二、为什么使用Anaconda三、安装步骤3.1 下载安装3.2 配置conda源 结语 前言 大家好&#xff01;我是向阳花花花花&#xff0c;本期给大家带来的是 Anaconda 安装及使用。 每日金句分享&#xff1a;故事不长&#xff0c;也不难讲。』—— 「…

期望DP入门

期望DP一般步骤&#xff1a; 1.模拟过程&#xff0c;找出线性性质&#xff0c;作为阶段&#xff08;这本质上也是线性DP&#xff09; 2.涉及DP状态 原则&#xff1a; 体现线性性质 体现边权 根据对期望有无贡献来设计状态 一般在状态设计时需要倒着设计 3.转移 根据边…

如何将自定义字体添加到 iOS 应用程序(SwiftUI + 得意黑)

1. 工具 Xcode Version 14.3 (14E222b)SwiftUI得意黑 Smiley Sans 2. Download https://github.com/atelier-anchor/smiley-sans/releases 3. Add Files to xxx 4. Add Test Code Text("Less is more. 朱洪苇 123").font(.custom("SmileySans-Oblique",…

【电子量产工具】4. UI系统

文章目录 前言一、UI界面分析二、结构体描述按钮三、按钮初始化四、默认绘制按键事件函数五、默认按下按键事件函数六、测试程序实验效果总结 前言 最近看了 电子量产工具 这个项目&#xff0c;本专栏是对该项目的一个总结。 一、UI界面分析 UI 是用户界面&#xff08;User In…

GEE:提取地区 NDVI/LST/RVI 并进行时间序列线性插值和SG滤波

作者&#xff1a;CSDN _养乐多_ 本文将介绍使用Landsat数据集&#xff0c;构建时间序列&#xff0c;并使用线性插值算法填补缺失数据&#xff0c;或者去云空洞&#xff0c;并进一步对完整的时间序列数据进行SG滤波处理。 文章目录 一、代码二、代码链接三、需要请私聊 一、代…

OPCUA 的历史数据库/聚合服务器的实现细节

进入了AI 大数据时代&#xff0c;无论是工业自动化系统&#xff0c;还是物联网系统&#xff0c;对大数据的采集&#xff0c;存储和分析都十分重要。大数据被称为工业的石油&#xff0c;未来制造业的持续改善离不开大数据。 传统的应用中&#xff0c;历史数据的存储是特定的数据…

官方外设库SDA安装和验证

第一种方法 1.打开mobaxterm&#xff0c;通过windows浏览器打开https://github.com/orangepi-xunlong/wiringOP下载压缩包&#xff0c;点击上传外设库的压缩包 2.输入命令 unzip 解压 3.输入命令 sudo ./build 安装工具包 4.验证安装完毕用 输入gpio readall 显示下面图片 第二…

数据分析实战(基础篇):从数据探索到模型解释

前言 本文着重介绍数据分析实战的基础知识和技巧&#xff0c;探索从数据探索到建模再到模型解释的完整过程内容包含数据探索、模型建立、调参技巧、SHAP模型解释数据来源于kaggle平台&#xff0c;crab age prediction数据集&#xff0c;数据详情 数据说明 数据背景 螃蟹味道…

【性能设计篇】聊聊异步处理

在性能设计的时候&#xff0c;其实主要的三板斧就是数据库(读写分离、分库分表)&#xff0c;缓存&#xff08;提升读性能&#xff09;&#xff0c;异步处理&#xff08;提升写性能&#xff09;以及相关的秒杀设计以及边缘设计等。 本篇主要介绍异步处理的哪些事&#xff0c;我们…

6.2.1 网络基本服务---域名解析系统DNS

6.2.1 网络基本服务—域名解析系统DNS 因特网是需要提供一些最基本的服务的&#xff0c;今天我们就来讨论一下这些基本的服务。 域名系统&#xff08;DNS&#xff09;远程登录&#xff08;Telnet&#xff09;文件传输协议&#xff08;FTP&#xff09;动态主机配置协议&#x…

Day47

思维导图 练习 实现登录框中&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;并跳转到其他界面 second.h #ifndef SECOND_H #define SECOND_H#include <QWidget>namespace Ui { class Second; }class Second : public QWidget {Q_OBJECTpublic:explicit …

Matlab绘图时的几个小技巧(修改刻度线长度、添加/去掉右边和上面的轴与刻度线、出图时去掉旁边的空白部分)

set(gca,TickLength,[0.005,0.035]); %修改坐标轴刻度线的长度 box on; %开启右面和上面的坐标轴 box off;%关闭右面和上面的坐标轴 set(gca, LooseInset, [0,0,0,0]);%删除掉图旁边多余的空白部分首先随便出一张图 我想让刻度线更长或更短一些&#xff1a; 我想让右侧和上面…

OpenCV的安装与配置指南(Windows环境,Python语言)

OpenCV 的安装与配置指南&#xff08;Windows环境&#xff0c;Python语言&#xff09; 导语一、安装 Python 二、安装 OpenCV 库三、配置 OpenCV 环境变量四、验证 OpenCV 安装总结 导语 OpenCV 是一个功能强大的计算机视觉库&#xff0c;广泛应用于图像处理和计算机视觉领域。…

第十二章 elk

1、ELK可以帮助我们解决哪些问题 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志 单个日志文件巨大,无法使用常用的文本工具分析,检索困难; 2、架构设计分析 Filebeat和Logstash ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、i…

MySQL入门必备:Linux中部署MySQL环境的四种方式详解

目录 一、仓库安装 二、本地安装 三、Docker中安装 四、源码安装 一、仓库安装 首先需要下载mysql软件包&#xff1a; 1、进入MySQL官网 2、进入MySQL社区版下载 3、使用yum方式下载MySQL 4、下载对应版本的软件包 5、这里可以不登录直接下载软件包 6、复制下载链接 7、然…

Perfetto详细解析

一、Perfetto基础 1、Perfetto介绍 Perfetto 是一个生产级的开源堆栈&#xff0c;用于提高性能 仪器和痕量分析。与 Systrace 不同&#xff0c;它提供数据源超集&#xff0c;可以用 protobuf 编码的二进制流形式记录任意长度的跟踪记录。可以将Perfetto理解为systrace的升级版…