tidb 分布式高可用架构

架构图:

一、环境规划:


Pd node


192.168.9.42


192.168.15.57


Tikv node


192.168.15.2


192.168.15.2


192.168.15.23


tidb


192.168.15.57


192.168.15.104


VIP


192.168.15.219


Haproxy  -v


1.4.20


192.168.15.57

192.168.9.42


Keepalived-v


1.2.19

准备前工作:

A、同步系统时间

B、是否把刷屏日志写到一个文件里,可在启动命令后面追加到一个文件

/tmp/sh-error1.log 2>&1 &

C、不同版本需要的包glibc

D、启动服务开启守护进程要加nohup,但实际没效果

E、系统版本为CENTOS6

F、包下载

http://down.51cto.com/data/2258987  ##CENTOS7

http://down.51cto.com/data/2259295  ##CENTOS6

http://down.51cto.com/data/2259848  ##pd tikv配置文件

友情提示:需要的其他包可以在其他章节博客里找到

G、IPTABLES 设置,需要开通集群使用的端口或者直接关闭

启动服务开启守护进程要加nohup

1、  下载包,解压后把命令存放在/usr/bin/目录下

#ln –s ……..

2、 修改57上pd配置文件,并启动:##默认参数不展示

name = "tidb_pd"

data-dir = "/home/tidb_pd"

client-urls = http://192.168.15.57:2379#本机

advertise-client-urls = ""

peer-urls = http://192.168.15.57:2380#本机

advertise-peer-urls =http://192.168.15.57:2380#本机

initial-cluster ="tidb57=http://192.168.15.57:2380,tidb104=http://192.168.15.104:2380"#为PD节点信息

initial-cluster-state = "new"

lease = 1

log-level = "debug"

tso-save-interval = "3s"

max-peer-count = 3

[balance]

min-capacity-used-ratio = 0.1

max-capacity-used-ratio = 0.9

address = ""

3、启动pd-server:

# nohup /usr/local/tidb/bin/pd-server--config=/usr/local/tidb/conf/pd.toml >>/tmp/aa.tx 2>&1  &

检查是否启动OK:

[email protected] conf]# netstat -nletp |grep pd-server

tcp 0  0192.168.15.57:2379    0.0.0.0:* ……

tcp 0  0 192.168.15.57:2380   0.0.0.0:*  ……….

4、修改三个节点的tikv配置文件并 并启动  #####默认参数不展示

addr ="192.168.15.13:20160" #写各个节点IP

advertise-addr= ""

store = "/home/tikv13"

log-level = "debug"

job = "tikv_13"

endpoints = "192.168.15.57:2379,192.168.15.104:2379" #写PD的IP

#/usr/local/tidb/bin/tikv-server--config=/usr/local/tidb/conf/tikv.toml &

此方式启动没办法做到后台后台守护,需要在启动前加nohup

#nohup /usr/local/tidb/bin/tikv-server--config=/usr/local/tidb/conf/tikv.toml>>/tmp/aa.tx 2>&1  &

直接这样启动  当前会话窗口不停的刷日志

5、启动tidb ##

#nohup /usr/local/tidb/bin/tidb-server--store=tikv --path="192.168.15.57:2379,192.168.15.104:2379" &

##--store=tikv为分布式是的引擎

[[email protected]]# netstat -nltp |grep tidb

tcp        0     0 :::10080                   :::*                        LISTEN

tcp        0     0 :::4000

###基础点

4000:为服务监听端口

10080:服务状态监听端口,此端口展示

###基础操作tidb

TiDB内部数据用的,包括prometheus统计

http://192.168.15.57:10080/debug/pprof

http://192.168.15.57:10080/metrics

查看tidb状态信息:http://192.168.15.57:10080/status

{"connections":1,"version":"5.7.1-TiDB-1.0","git_hash":"01dde4433a0e5aabb183b3f6d00bd2f43107421a"}

查看集群状态,集群状态通过查看pd服务信息既可看到tikv信息

http://192.168.15.57:2379/pd/api/v1/stores

或者在本地查看 直接加curl 加地址

首次登录为:mysql –h192.168.15.57 –P4000 –uroot

mysql –h192.168.9.42 –P4000 –uroot

mysql> show databases;

+--------------------+

| Database          |

+--------------------+

| INFORMATION_SCHEMA |

| PERFORMANCE_SCHEMA |

| mysql             |

| test              |

| tidb              |

+--------------------+

登录后看到保存的元数据信息是相同的。集群OK

5、在192.168.15.57 和192.168.9.42上都安装haproxy 和keepalived服务

##keepalived主要提供资源高可用,解决单点故障,实现VIP漂移

1、  解压配置haproxy

###配置HAPROXY 若同时启动haproxy,一边没有IP资源的会提示

 Startingproxy admin_stats: cannot bind socket导致服务无法启动,修改:

修改内核参数: /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind=1

保存结果,使结果生效

sysctl  –p

#useradd haproxy

#tar -zxvf haproxy-1.4.20.tar.gz

#cd haproxy-1.4.20 &&makeTARGET=linux26 PREFIX=/usr/local/haproxy ARCH=X86_64 && makeinstallPREFIX=/usr/local/haproxy

若出现此问题,则需要安装gcc

#yum –y install gcc

#chown -R haproxy.haproxy/usr/local/haproxy

2、添加修改配置文件,部分解释参数配置意义(具体看haproxy.cfg)

   #cd /usr/local/haproxy && makeconf&&cdconf && touch haproxy.cfg

###注意前段页使面用的端口48800和前端提供服务的端口,开通IPTABLES访问权限,

端口不能有冲突

3、默认情况下haproxy是不记录日志的,可以使用rsync本例LINUX服务记录日志。

1、在linux下是rsyslogd服务,

#yum –yinstallrsyslog先安装rsyslog

一般安装好rsyslog会自动生成rsyslog.d这个目录,若无自己创建

#cd/etc/rsyslog.d/ && touch haproxy.conf

#vim/etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local0.* /var/log/haproxy.log ###这个必须和haproxy.cfg的配置文件一致。

#vim /etc/rsyslog.conf

在62行 添加local0.*       /var/log/haproxy.log

重启服务

#service rsyslogrestart

现在你就可以看到日志(/var/log/haproxy.log)了

Haproxy.cfg:

# this config needs haproxy-1.1.28 orhaproxy-1.2.1

global

log127.0.0.1   local0

maxconn4096

log127.0.0.1   local1 notice

#logloghost    local0 info

#maxconn4096

#chroot/usr/local/haproxy

chroot/usr/local/pxc

uid501

gid501

daemon

nbproc1

pidfile/usr/local/haproxy/logs/haproxy.pid

#debug

#quiet

defaults

log global

#option dontlognull

retries 3

option      redispatch

maxconn 4096

timeout     http-keep-alive 10s

timeoutcheck 10s

contimeout  600s

clitimeout  600s

srvtimeout  50000

timeoutqueue   50000

timeoutconnect 600s

timeoutclient  600s

timeoutserver  600s

listen admin_stats 192.168.15.219:48800

stats enable

statshide-version

stats realm <realm>

statsrefresh 5s

statsuri /admin-status

stats auth admin:admin

stats admin if TRUE

mode http

option httplog

timeout connect 600s

timeout check 5000

timeout client 600s

timeout server 600s

listen  tidb_server192.168.15.219:3306

modetcp

balance roundrobin

optiontcpka

optiontcplog

server  tidb_server1 192.168.15.57:4000 weight 1 checkinter 2000 rise 2 fall 5

server  tidb_server2 192.168.9.42:4000  weight 1 check inter 2000 rise 2 fall 5backup

#timeoutconnect 50000

#timeoutclient  50000

#timeoutcheck   50000

#timeouthttp-keep-alive 5000

#timeoutserver  50000

listen tidb_status 192.168.15.219:6688

modetcp

balanceroundrobin

optiontcpka

optiontcplog

servertidb_status1 192.168.15.57:10080 weight 1 check inter 2000 rise 2 fall 5

servertidb_status2 192.168.9.42:10080 weight 1 check inter 2000 rise 2 fall 5

timeoutconnect 50000

timeout client  50000

timeout check   50000

timeout http-keep-alive 5000

timeout server  50000

listen tikv_server

bind*:20160

modetcp

balance roundrobin

option tcpka

option tcplog

server tikv_server1 192.168.15.2:20160 weight 1 check inter 2000 rise 2fall 5

server tikv_server2 192.168.15.13:20160 weight 1 check inter 2000 rise 2fall 5

server tikv_server3 192.168.15.23:20160 weight 1 check inter 2000 rise 2fall 5

timeout connect 50000

timeout client  50000

timeout check   50000

timeout http-keep-alive 5000

timeout server  50000

6、安装keepalived服务:

#cd keepalived-1.2.12

#./configure--prefix=/usr/local/keepalived

若报错:

configure:error:

!!! OpenSSL is notproperly installed on yoursystem. !!!

!!! Can not include OpenSSL headersfiles.           !!!

yuminstall  openssl* check* -y

#make &&  make install

#cp/usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/

#cp/usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/

#mkdir /etc/keepalived

#cp/usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived/

#cp/usr/local/keepalived/sbin/keepalived/usr/sbin/

Keepalived.conf:

cat keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

[email protected]

[email protected]

}

notification_email_from [email protected]

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface em1

virtual_router_id 51

realserver 192.168.15.57

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.15.219 dev em1 scope global

}

#notify_master/etc/keepalived/check_master_haproxy.sh

#notify_master/etc/keepalived/check_backup_haproxy.sh

}

###注意这里需要写个简单的脚本判断haproxy和keepalived服务的高可用,若出现故障进行切换。脚本略

##把tikv,tidb,pd都加到haproxy里去,不知道会不会影响效率,若是有还是老老实实的使用原生态界面查看

##在负载均衡,可以替换的有maxscale也是不错的,,,配置简单,就是没有监控界面

时间: 2024-11-11 20:16:09

tidb 分布式高可用架构的相关文章

jeesz分布式架构-分布式高可用

版权声明:本文为博主原创文章,未经博主允许不得转载. 什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%. 如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%. 很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时. 如何保障系统的高可用 我们都知道,单点是系统

模拟当当网高可用架构之道(分布式集群)

系统中的非功能性需求今天我们的主是当当高可用架构设计之道,高可用并不是功能性的需求,而是传统的IT当中非功能性需求的一部分.大家可以看到我这里罗列了很多非功能性需求,但是这当中并没有「高可用」这三个字. 举一个例子,比如说你买了一台苹果手机,无论是作为手机还是电脑,还是MP3,还是专门用来看视频的,都是功能:那么非功能性呢,比如说大家很崇 拜乔布斯,产品设计极致体验,苹果手机只有1个键,简单好用,这就是一个非功能性需求.另外还有很多朋友买土豪金的手机,就是为了区分开,因为颜色不一 样.这个颜色也

分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)

环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL 版本:mysql-5.6.22.tar.gz 主节点 IP:192.168.1.205 主机名:edu-mysql-01 从节点 IP:192.168.1.206 主机名:edu-mysql-02 MySQL 主从复制官方文档 http://dev.mysql.com/doc/refman/5.6/en/replication.html MySQL 主从复制的方式 MySQL5.6 开始主从复制有两种方式:

单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构(转)

转自http://www.php1.cn/Content/DanBiao_60_YiJiLuDengDaShuJuChangJingDe_MySQL_YouHuaHeYunWeiZhiDao_%7C_GaoKeYongJiaGou.html, 更多详细资料请参看原文 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高

亿级商品详情页架构演进技术解密 | 高可用架构系列

亿级商品详情页架构演进技术解密 | 高可用架构系列 --http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=210272034&idx=1&sn=3be9d2b53c7fec88716ee8affd2515f8&scene=1&srcid=UfXZNNOVZZyZjQmp0VOh&from=groupmessage&isappinstalled=0#rd 此文是开涛在[三体高可用架构群]之分享内容

MySQL 高可用架构在业务层面的应用分析

MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&sn=f9a0d03dd9a1cf3b3575c0241291e421&scene=22&srcid=seLU5tmZumKLzwVBIHzM#rd http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&am

MySQL数据库的优化(下)MySQL数据库的高可用架构方案

MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQL数据库的优化,今天我们继续跟随笔者学习MySQL优化的集群方案. AD:51CTO 网+首届APP创新评选大赛火热启动——超百万资源等你拿! [51CTO独家特稿]在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQL数据库的优化,今天我们继续跟随笔者学习MySQL优化的集群方案. M

[转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd4a02f7fd81fb2a7d78e3&scene=1&key=0acd51d81cb052bce4ec2a825666e97fe7d6e1072fb7d813361771645e9403309eb1af025691162c663b60ea990c3781&ascene=0&

高可用架构设计与实践

第一课:高可用架构知识原理篇 什么架构的高可用? 架构高可用的重要性? 架构高可用的常用手段都有哪些? 架构高可用评价维度是什么? 架构高可用的考核如何分级? 架构高可用的涉及环节都有哪些? 第二课:高可用架构设计之总体架构篇 高可用架构为什么需要分层? 高可用架构分层设计原则是什么?如何架构分层? 高可用架构分层最佳实践: 我们的实践案例: 第三课:高可用架构设计之硬件篇 如何选择硬件?选择什么样的硬件? 高可用架构硬件层面如何保证? 硬件层面高可用架构保证的最佳实践是什么? 我们的实践案例: