作业1完成HAproxyMycat2节点的集群并记录操作结果_第1页
作业1完成HAproxyMycat2节点的集群并记录操作结果_第2页
作业1完成HAproxyMycat2节点的集群并记录操作结果_第3页
作业1完成HAproxyMycat2节点的集群并记录操作结果_第4页
作业1完成HAproxyMycat2节点的集群并记录操作结果_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 完成 HAproxy+Mycat 2 节点的集群并操作结果2 了解 Ceph 与 GlusterFS 在中的应用案例什么命令可以知道当前 Galera 集群的工作状态,比如节点同步状态,有没有被排除集群的节点等选作, 给出 Galera 集群的搭建过程一完成 HAproxy+Mycat 2 节点的集群并操作结果1.1 环境描述5OS: Oracle Linux Server release 6.3 Mycat server1:34:8806 Mycat server2:39:8806 Haproxy server:39: 8098前期未启用 VIP,所以先用 Mycat server2 的

2、 8098 端口作为 haproxy 的对外接口1.2 Mycat 安装在 Mycat server1 及 Mycat server2 上进行安装 MycatLinux(Unix)下,建议放在/usr/local/MyCAT 目录下,如下面类似的:useradd mycatn R mycat.mycat /usr/local/mycat启动 mycat/usr/local/mycat/bycat start1.3 Haproxy 的安装useradd haproxy#wget# tar zcvf haproxy-1.3.20.tar.gz # cd haproxy-1.3.20# make#

3、make install=linux26 PREFIX=/usr/local/haprpxy ARCH=x86_64安装完毕后,进入安装目录创建配置文件# cd /usr/local/haproxy#n R haproxy.haproxy *# vi haproxy.cfg默认 haproxy 是不日志的,为了日志还需要配置 syslog 模块,在 oracle linux 下是 rsyslogd 服务,yum y installrsyslog 先安装 rsyslog,然后#vi /etc/rsyslog.d/haproxy.conf加入以下内容$ModLoad imudp$UDPServer

4、Run 514local0.* /var/log/haproxy.log #对应 haproxy.cfg 的日志保存,重启选项service rsyslog restart现在你就可以看到日志了在 Mycat server1 Mycat server2 上都需要添加检测端口 48700 的,为此需要用到 xinetd首先在 xinetd 目录下面增加与端口的配置文件#vim /etc/xinetd.d/mycat_susservice mycat_susgloballog local0#记日志的功能 maxconn 4096chroot /usr/local/haproxy user hapr

5、oxygroup haproxy daemondefaultslog globaloptiondontlognull retries3option redispatch maxconn 2000contimeout5000imeout50000srvtimeout50000listenadmin_ss 39:48800#由于没有启用 VIP,暂时用其中一台的 IP 和新端口ss uri /admin-sus#统计页面 ss authadmin:adminmodehttp optionhttploglistenallmycat 39:8098 mode tcpoption tcplogoptio

6、n httpchk OPTIONS * HTTP/1.1rnHost: www balanceroundrobinservermycat_134 34:8066 check port 48700er 5s rise 2 fall 3servermycat_139 39:8066 check port 48700er 5s rise 2 fall 3srvtimeout 20000再增加/usr/local/bycat_sus 用于检测 mycat 是否运行的#service xinetd restart查看 48700 端口是否了#nets -antup|grep 48700如上图则端口的配置

7、正确了启动 haproxy/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg为了使用方便可以增加一个启动,停止 haproxy 的停止stophap 内容如下分别赋予启动权限#!/bin/shps -ef | grep sbin/haproxy | grep -v grep |awk pr$2|xargs kill -s 9启动starp 内容如下#!/bin/sh/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg then/bin/e

8、cho -e HTTP/1.1 200 OKrn else/bin/echo -e HTTP/1.1 503 Service Unavailablernfi我是根据 mycat sus 返回的状态来判定 mycat 是否在运行的,也可以直接通过P8806 e”select user()”等直接执行 sql 的形式来检测重启 xinetd 服务flags= REUSEsocket_type= streamport= 48700wait= nouser= nobodyserver= /usr/local/bycat_sus log_on_failure+= USERIDdisable= nood

9、+x starpod +x stophap启动后可以通过(用户名都是 adminfg 配置的)配置完成二、了解 Ceph 与 GlusterFS 在中的应用案例下面先来说一下 ceph 的部署,部署坏境为 CentOS 6.4,ceph来部署 ceph 的。推出了一个部署工具 ceph-deploy,我是使用这个如上图所示,这次集群规模以 3 台服务器为例,并额外选取一台作为管理节点。1)在管理节点上生成公钥,并在管理节点上建立到 3 台节点的信任关系。1234ssh - keygenssh - copy - id ceph - node1ssh - copy - id ceph - node

10、2ssh - copy - id ceph - node32)添加源,在/etc/yum.re.d/目录中创建 ceph.repo 文件,并写入如下内容。1234567 ceph - noarch name = Ceph noarch packagesbaseurl = http :/rpm-ceph-stable-release/distro/noarchenabled = 1gpgcheck = 1 type = rpm - md gpgkey = https :/git/?p=ceph.git;a=blob_plain;f=keys/release.asc其中部分需要替换,目前 ceph

11、 最新版本 v0.72.1 叫 emperor,管理节点系统为 centos 6.4。因此修改为的源文件如下所示。1234567 ceph - noarch name = Ceph noarch packagesbaseurl = http :/rpm-emperor/el6/noarchenabled = 1gpgcheck = 1 type = rpm - md gpgkey = https :/git/?p=ceph.git;a=blob_plain;f=keys/release.asc1yum update & yum install ceph - deploy4)搭建集群,要搭建集群

12、的架构如下图所示。在搭建集群过程中会生成一些文件,因此最好先创建个文件夹,在文件夹当中进行操作。1ceph - deploy new ceph - node 这里 new 后面接 mon 节点主机名称,这里在每个节点上都运行 mon 进程,因此执行如下命令。1ceph - deploy new ceph - node1 ceph - node2 ceph - node3成功执行该命令后,将会生成集群的配置文件,keyring 文件以及日志文件。1ceph - deploy install ceph - node1 ceph - node2 ceph - node31ceph - deploy

13、mon create ceph - node1 ceph - node2 ceph - node3收集各个节点的 keyring 文件。1ceph - deploy gatherkeys ceph - node1 ceph - node2 ceph - node3当成功执行上面命令的时候,在本地目录下会生成如下文件:123ceph . c nt . admin . keyringceph . bootstrap - osd . keyringceph . bootstrap - mds . keyring添加 3 个 OSD,使用过程中我把磁盘做成逻辑卷挂载在/opt/ceph 目录下。在管理

14、节点上执行如下命令。1ceph - deploy osd prepare ceph - node1 : / opt / ceph ceph - node2 : / opt / ceph ceph - node3 : / opt / ceph1ceph - deploy osd active ceph - node1 : / opt / ceph ceph - node2 : / opt / ceph ceph - node3 : / opt / ceph至此,ceph 共享集群就搭建完成。由于要使用 ceph 文件系统,因此至少还需要一台 metadata 服务器。在管理节点上执行如下命令创建

15、一个 metadata 服务器。1ceph - deploy mds create ceph - node1建议目前即使在生产环境中只是用一台 metadata 服务器也是可以的,但并不是不可以使用多台 metadata 服务器,只不过是那种情况下将缺少商业支持。接下来,我将挂载 ceph 文件系统到的服务器上,在该服务器上安装 ceph-fuse。1yum install ceph - fuse安装好 ceph-fuse 后,执行如下命令进行挂载。如果要使用 ceph 做 OpenStack 临时的话,就将 ceph 文件系统挂载到/var/lib/nova/instan目录下即可,这里测试

16、就将 ceph 挂载到/mnt/ceph 目录下。1ceph - fuse - m ip - address - of - monitor : 6789 / mnt / ceph在搭建 glusterfs 的时候出现些问题,给出要搭建 glusterfs 的同学如下建议。1)在搭建过程中最好使用节点 IP;2)各个节点版本必须一致,目前最新版为 3.4.1。为了保证各个节点 glusterfs 版本一致,先更新各个节点源。123cd / etc / yum . repo . d /wget http : /download.gluster./pub/gluster/glusterfs/3.4/

17、3.4.1/CentOS/glusterfs-epel.repoyum update如上图所示,也选择三个节点组成 glusterfs 集群。在 glusterode01 上安装 glusterode01。12yum - y install glusterfs - server/ etc / init . d / glusterd startglusterode02 和 glusterode03 同样执行如上操作。1)添加节点,在glusterode01 上进行添加节点。1234glusterobe ip - address - of - glusterfs - node02 glustero

18、be ip - address - of - glusterfs - node03 #查看节点情况glusteer sus2)创建卷,为了测试和上面 ceph 类似,逻辑卷挂载到/opt/glusterfs 上。123gluster volume create shared_vol replica 3 ip - address - of - glusterfs - node01 : / opt / glusterfs ip - address - of - glusterfs - node02 : / opt / glusterfs ip - address - of - glusterfs

19、- node03 : / opt / glusterfs#查看卷状态gluster volume info这里设置的每份数据存 3 份。1gluster volume start shared_vol至此服务器端部署完成,下面来部署客户端。4)安装客户端程序,这里要注意是否与服务器端版本一致。1yum - y install glusterfs - c nt1mount . glusterfs ip - address - of - glusterfs - node01 : / shared_vol / mnt / glusterfs至此 ceph 和 glusterfs 部署全部完成,其中

20、ceph 参考了作者。文档,glusterfs 参考了老师的文章,在此感谢原看了些文章,都说 ceph 的文件系统性能并不是很好,笔者使用 fio 对 ceph 和 glusterfs 文件系统的读写进行能简单的测试。1fio - direct = 1 - rw = rw - bs = 1m - size = 5g - numjobs = 64 - group_reporting - name = test - rw123#cephREAD : io = 166400MB , aggrb = 8680KB / s , minb = 8680KB / s , maxb = 8680KB / s

21、, m 19630496msec= 19630496msec , maxt =WRITE : io = 161280MB , aggrb = 8412KB / s , minb = 8412KB / s , maxb = 8412KB / s , m19630496msec= 19630496msec , maxt =glusterfs 所得结果如下:123#glusterfsREAD : io = 166400MB , aggrb = 35152KB / s , minb = 35152KB / s , maxb = 35152KB / s , m 4847257msec= 4847257m

22、sec , maxt =WRITE : io = 161280MB , aggrb = 34070KB / s , minb = 34070KB / s , maxb = 34070KB / s , m4847257msec= 4847257msec , maxt =可以看得出 ceph 的文件系统读写性能相比 glusterfs,还是相差很多。感觉目前最好的解决方案是文件系统用 glusterfs,块也荡然无存了,用 ceph,对象用 swift,但是这么一来 ceph 的三、什么命令可以知道当前 Galera 集群的工作状态,比如节点同步状态,有没有被排除集群的节点等A、集群状态检查1、S

23、HOW GLOBAL SUS LIKE wsrep_%;+| Variable_name| Value|+| wsrep_local_se_uuid| 9f6a992a-7dd9-11e5-9f85-f76074539| wsrep_protocol_ver| 7|mitted| 53| wsrep_replicated| 6| wsrep_replicated_bytes| 1368| wsrep_repl_keys| 9| wsrep_repl_keys_bytes| 210| wsrep_repl_data_bytes| 774| wsrep_repl_other_bytes| 0| w

24、srep_received| 37| wsrep_received_bytes| 23347|mits| 0| wsrep_local_cert_failures| 0| wsrep_local_replays| 0| wsrep_local_send_queue| 0|wsrep_local_send_queue_max|2| wsrep_local_send_queue_min| 0| wsrep_local_send_queue_avg| 0.125000| wsrep_local_recv_queue| 0| wsrep_local_recv_queue_max| 2| wsrep_l

25、ocal_recv_queue_min| 0| wsrep_local_recv_queue_avg| 0.027027| wsrep_local_cached_downto| 14| wsrep_flow_control_paused_ns | 0| wsrep_flow_control_paused| 0.000000| wsrep_flow_control_sent| 0| wsrep_flow_control_recv| 0| wsrep_cert_deps_distance| 1.000000|wsrep_apply_oooe|0.100000| wsrep_apply_oool|

26、0.000000|wsrep_apply_window|1.250000|mit_oooe|0.000000|mit_oool|0.000000|mit_window|1.250000| wsrep_local_se| 4| wsrment| Synced| wsrep_cert_index_size| 10| wsrep_cert_bucket_count| 22| wsrep_gcache_pool_size| 27144| wsrep_causal_reads| 0| wsrep_cert_erval| 0.325000|ing_addresses|wsrep_evs_delayed|

27、wsrep_evs_evict_list| wsrep_evs_repl_latency| 0/0/0/0/0|wsrep_evs_se|OPERATIONAL|m_uuid| 5e28860a-829e-11e5-9c06-665d7fe4003d| wsrep_cluster_conf_id| 3| wsrep_cluster_size| 3| wsrep_cluster_se_uuid| 9f6a992a-7dd9-11e5-9f85-f76074539| wsrep_cluster_sus| Primary|wsrep_connected|ON| wsrep_local_bf_abor

28、ts| 0| wsrep_local_index| 1| wsrep_provider_name| Galera| wsrep_provider_vendor| Codership Oy | wsrep_provider_ver| 3.12(rX)|wsrep_ready|ON|+ation-w状态的变化。使用方法参见wsrep_notify_cmd.shhttp:/ges/notificationcmd.html2、wsrep_cluster_se_uuid 显示了 cluster 的 se UUID,由此可看出节点是否还是集群的一员SHOW GLOBAL SUS LIKE wsrep_cl

29、uster_se_uuid集群内每个节点的 value 都应该是一样的,否则说明该节点不在集群中了+| Variable_name| Value|+| wsrep_cluster_se_uuid | 9f6a992a-7dd9-11e5-9f85-f76074539 |+3、wsrep_cluster_conf_id 显示了整个集群的变化次数。所有节点都应相同,否则说明某个节点与集群断开了4、wsrep_cluster_size 显示了集群点的个数5、wsrep_cluster_sus 显示集群里节点的主状态。标准返回 primary。如返回 non-Primary 或其他值说明是多个节点改变

30、导致的节点丢失或者脑裂。如果所有节点都返回不是 Primary,则要重设 quorum。具体参见ation-wges/quorumreset.html 如果返回都正常,说明机制在每个http:/节点都能正常工作,下一步该检查每个节点的状态确保他们都能收到 write-setshow global sus like wsrep_cluster_sus;+| Value|+| Variable_name+| wsrep_cluster_sus | Primary |+B、检查节点状态节点状态显示了集群中的节点接受和更新 write-set 状态,以及可能的一些问题1、wsrep_ready 显示了

31、节点是否可以接受 queries。ON 表示正常,如果是 OFF 几乎所有的 query 都会报错,报错信息提示“ERROR 1047 (08501) Unknownd”SHOW GLOBAL SUS LIKE wsrep_ready;+| Variable_name | Value |+| wsrep_ready| ON|+2、SHOW GLOBAL SUS LIKE wsrep_connected显示该节点是否与其他节点有网络连接。(实验得知,当把某节点的网卡 down 掉之后,该值仍为 on。说明网络还在)丢失连接的问题可能在于配置wsrep_cluster_address 或 wsre

32、p_cluster_name 的错误+| Variable_name| Value |+| wsrep_connected | ON|+3、wsrment 以人能读懂的方式显示节点的状态,正常的返回值是 Joining, Waiting on SST,Joined, Synced or Donor,返回 Initialized 说明已不在正常工作状态+| Variable_name| Value|+| wsrment | Synced |+C、查看的健康状态通过 Flow Control 的反馈机制来管理进程。当本地收到的 write-set 超过某一阀值时,该节点会启动 flowcontro

33、l 来暂停直到它赶上进度。本地收到的请求和 flow control,有如下几个参数:1、wsrep_local_recv_queue_avg平均请求队列长度。当返回值大于 0 时,说明 apply write-sets 比收write-set 慢,有等待。堆积太多可能导致启动 flow control+-+| Variable_name| Value|+-+| wsrep_local_recv_queue_avg | 0.027027 |+-+wsrep_local_recv_queue_max 和 wsrep_local_recv_queue_min 可以看队列设置的最大最小值2、wsre

34、p_flow_control_paused 显示了自从上次查询之后,节点由于 flow control 而暂停的时间占整个查询间隔时间比。总体反映节点落后集群的状况。如果返回值为 1,说明自上次查询之后,节点一直在暂停状态。如果发现某节点频繁落后集群,则应该调整 wsrep_slave_threads 或者把节点剔除+| Variable_name| Value|+| wsrep_flow_control_paused | 0.000000 |+3、wsrep_cert_deps_distance 显示了平行 apply 的最低和最高排序代表了节点潜在的并行程度,和线程相关或者 sql之间的平

35、均距离值。这+| Variable_name| Value|+| wsrep_cert_deps_distance | 1.000000 |+D、检测网络慢的问题通过检查发送队列来看传出的连接状况1、wsrep_local_send_queue_avg 显示自上次查询之后的平均发送队列长度。比如网络瓶颈和 flow都可能是原因control+-+| Variable_name| Value|+-+| wsrep_local_send_queue_avg | 0.033333 |+-+wsrep_local_send_queue_max 和 wsrep_local_send_queue_min

36、可以看队列设置的最大值和最小值E、日志在f 中做如下配置# wsrep Log Optionss=ON#会将信息写入错误日志中,例如两个节点同时写同一行数据wsrep_log_#过程中的错误信息写在日志中wsrep_provider_options=cert.log_s=ONwsrep_debug=ON#显示 debug中不开启信息在日志中,其中也包括鉴权信息,例如账号。因此在生产环境F、附加的日志当某节点在从节点上应用一个事件失败时,数据库服务器会创建一个特殊的 binary log 文件。文件名默认是GRA_*.log四、给出 Galera 集群的搭建过程环境:redhat 7:5.5.3

37、7galera: 25.3.5解压,新增rootos1 # ls -l用户,然后初始化-5.5.37_wsrep_25.10-linux-x86_64.tar.gz-rw-r-r-. 1 root root 62014481 Nov 23 17:17-5.5.37_wsrep_25.10-linux-x86_64.tar.gzrootos1# ./scripts/_install_db -user=-datadir=/usr/local/data安装 galera 的 pluginrootos1 # rpm -ivh -force galera-25.3.5-1.rhel6.x86_64.rp

38、mPreparing.# 100%Updating / installing.1:galera-25.3.5-1.rhel6# 100%拷贝 libgalera 的 plugin 到/lib 目录下rootos1 local# cp /usr/lib64/galera/libgalera_smm.so /usr/local/lib/pluginrootos1 #n -R:/usr/local/编写f 文件ddatadir=/usr/local/socket=/usr/local/data/.sockmended to prevent assorted security risks# Disab

39、ling symbolic-links issymbolic-links=0# Settings user and group are ignored when systemd is used.# If you need to rund under a different userroup,# customize your systemd unit file for mariadb according to the# instructions in default_storage_engine=innodb log_bin=1binlog_format=ROW innodb_file_per_

40、table=1 log-slave-updates=1 server_id=1225innodb_autoinc_lock_mode=2wsrep_node_name = 5wsrep_provider = /usr/local/lib/plugin/libgalera_smm.sowsrep_sst_method =dumpwsrep_sst_auth=root:rootroot -然后启动第一个节点rootos1 plugin# /usr/local/bysqld_safe -wsrep-clm:/141123 19:48:06141123 19:48:06d_safe Logging t

41、o /var/log/d.log.d_safe Startingd_safed daemon with databases from /usr/local/14112319:48:06WSREP:Runningitionrecoverywith-log_error=/usr/local/141123 19:48:06 ./wsrep_recovery.u1fVym -file=/usr/local-recovidd_safe WSREP: Failed to recovosition:rootos1 support-files# nets-nltp | grep 3306:*tcp00 :33

42、06LISTEN10023/drootos1 support-files# /usr/local/bysql -u root -p -socket=/usr/local/.sock show global sus like %se%;+-+| Variable_name| Value|+-+| wsrep_local_se_uuid| b34c90ed-7306-11e4-ba41-a65afe12d31b | wsrep_local_se| wsr| wsrep_cluster_s| 4ment | Synced|e_uuid | b34c90ed-7306-11e4-ba41-a65afe12d31b |+-+在第二个节点如法制,但是f 稍有不同ddatadir=/usr/local/socket=/usr/local/data/.sockmended to prevent assorted security risks# Disabling symbolic-links issymbolic-links=0# Settings user and group are ignored when systemd is used.#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论