转载

GALERA ARBITRATOR - 数据库多主集群对应脑裂的解决方案

GALERA ARBITRATOR

因为 Galera 集群需要至少3个节点组成集群,才不会发生脑裂状况。

Galera 集群部署推荐的是至少三个实例或三个节点或三个数据中心等等。

如果添加一个节点会成本太高,比如添加多一台数据库服务器,那你可以选择使用 Galera Arbitrator 。 Galera Arbitrator 就是集群中的一份子,可以参与投票,但不参与实际的复制。

注意:虽然 Galera Arbitrator 不参与复制,但它和其他节点一样也会接受数据。你必须确保他的网络连接。

Galera Arbitrator 有两个用途:

  • 当集群为偶数节点时,它的加入以避免脑裂的发生。

  • 同时它能够用于备份,例如快照功能。

GALERA ARBITRATOR - 数据库多主集群对应脑裂的解决方案

如果一个数据中心失败或者是断开连接,并且它与 Galera Arbitrator 是接连的话,那 Galera Arbitrator 就会作为中间件的扩展。例如 node1 与 node2 是断开连接的,此时若 node1 与 Galera Arbitrator 、 node2 与 Galera Arbitrator 连接的话,那 Galera Arbitrator 作为中间件将会为 node1 与 node2 连接通信。

尽管 Galera Arbitrator 不存储数据,但它必须可以看到所有的流量的传输复制。如果 Galera Arbitrator 放在一个网络环境较差的地方,那它连接到集群的时候,可能会导致集群执行或性能下降。

如果 Galera Arbitrator 失败的话,它不会影响集群的正常操作。你可以将一个新的实例加入到集群中,可以有多个实例运行在集群中。

有关 Galera Arbitrator 备份的设置,可参考 Galera 集群备份

STARTING GALERA ARBITRATOR

Galera Arbitrator 在 Galera 集群中是一个单独的进程。这意味着,你需要独立启动它。这也意味着你不能通过数据库配置文件的方式来启动,比如不能通过 my.cnf 启动。

Galera Arbitrator 在启动的时候,脚本会在无人使用的进程中执行 sudo 声明,有一个特定问题在Fedora和其他版本的Linux中,这默认用户没有操作 sudo 配置的权限。要修正这个问题需要编辑 /etc/sudoers 中的 Defaults requiretty ,把这个注释掉即可。这样就可以防止操作系统阻塞 Galera Arbitrator 。

Starting Galera Arbitrator from the Shell

当开始通过 shell 命令执行 Galera Arbitrator 的时候,首先你需要通过命令行参数配置。例如:

$ garbd --group=example_cluster /      --address="gcomm://192.168.1.1,192.168.1.2,192.168.1.3" /      --option="socket.ssl_key=/etc/ssl/galera/server-key.pem;socket.ssl_cert=/etc/ssl/galera/server-cert.pem;socket.ssl_ca=/etc/ssl/galera/ca-cert.pem;socket.ssl_cipher=AES128-SHA"" 

如果你使用 SSL 的方式,则你需要输入密码。否则会有 terminate called after throwing an instance of ‘gu::NotSet’ 的 SSL 提示。

如果你不想每次通过 shell 方式启动 Galera Arbitrator ,那你可以自定义配置文件中执行。

例如配置文件如下:

# arbtirator.config group = example_cluster address = gcomm://192.168.1.1,192.168.1.2,192.168.1.3 

当你开始启动 Galera Arbitrator ,使用 --cfg 选项。

例如:

$ garbd --cfg /path/to/arbitrator.config 

更多的参数,可用过--help来查看帮助。

$ garbd --help  Usage: garbd [options] [group address]  Configuration:   -d [ --daemon ]       Become daemon   -n [ --name ] arg     Node name   -a [ --address ] arg  Group address   -g [ --group ] arg    Group name   --sst arg             SST request string   --donor arg           SST donor name   -o [ --options ] arg  GCS/GCOMM option list   -l [ --log ] arg      Log file   -c [ --cfg ] arg      Configuration file  Other options:   -v [ --version ]      Print version   -h [ --help ]         Show help message 

除了标准的配置, Galera 集群中任何配置,都可用于 Galera Arbitrator ,除了那些 repl 前缀的命令。

当你从 shell 启动的话,你可以使用 --option 来设置参数。

更多 Galera Arbitrator 参数可参考 Galera 参数

Starting Galera Arbitrator as a Service

当开始 Galera Arbitrator 服务时,无论你使用 init 或者 systemd ,通过 shell 命令,指定不同的配置文件,来启动不用的服务,以实现灵活启动。

# Copyright (C) 2013-2015 Codership Oy # This config file is to be sourced by garbd service script.  # A space-separated list of node addresses (address[:port]) in the cluster: GALERA_NODES="192.168.1.1:4567 192.168.1.2:4567"  # Galera cluster name, should be the same as on the rest of the node. GALERA_GROUP="example_wsrep_cluster"  # Optional Galera internal options string (e.g. SSL settings) # see http://galeracluster.com/documentation-webpages/galeraparameters.html GALERA_OPTIONS="socket.ssl_cert=/etc/galera/cert/cert.pem;socket.ssl_key=/$"  # Log file for garbd. Optional, by default logs to syslog LOG_FILE="/var/log/garbd.log" 

为了让 Galera Arbitrator 使用配置文件启动,需要你把他放到系统配置文件中,因操作系统发行版而异,而放到不同的地方,通常是放在 /etc 下。

通常位置:

  • /etc/defaults/

  • /etc/init.d/

  • /etc/systemd/

  • /etc/sysconfig/

检查你的发行版的来确定配置文件放在哪里。

一旦你把配置文件放到对的地方,你可以用 garb 命令来启动服务。

# service garb start 或者 # systemctl start garb 

之后它会执行配置文件里面设置的参数来运行对集群的监听。

原文  https://segmentfault.com/a/1190000005370057
正文到此结束
Loading...