文章
Hao Ma · 九月 17, 2022 阅读大约需 8 分钟

IRIS的镜像配置(2)

Mirror的配置

这里详细介绍了主成员(Primary)和备用成员(Backup)的设置过程。 虽然也包括了异步成员配置的章节,其实我没有真的操作,我认为应该没有特别需要注意的。

配置Mirror应该有这么几步:

1. 启动Mirror服务

进入系统管理界面,选择系统管理>配置>镜像设置>启动镜像服务,勾选服务已启动, 保存退出。这是可以看到菜单栏的创建镜像条目已经从灰色变成正常的白色,表示您已经可以创建镜像。

仅仅是打开服务,并没有修改Journal文件

2. 创建镜像,添加主成员

在管理界面进入“系统>配置>镜像设置>创建镜像”,从这里开始镜像的创建工作。创建镜像的同时,这一步还包括把本机做为第一个镜像成员加入到镜像。第一个镜像成员被加入后会成为主镜像成员, 菜单里的英文是“Primary Failover Member"。

Warning: 如果本机的ISCAgent没有启动, 您会得到提示“错误 #2118: ISCAgent不在本地系统中启动”。另外,特殊情况下,您还可能会碰到错误提示:“错误 #2136: 实例的版本高于ISCAgent的版本”。

镜像的设置

如下面的截图,创建镜像需要提供这些配置信息:

image-20220803171131292

  • 镜像名称:可以是任意的名称, 和各个服务器/成员的名称无关。

  • 需要SSL/TLS:如果您不勾选此选项,会得到“强烈建议使用SSL/TLS"的提示信息。SSL/TLS的配置需要您提供:

    • 包含受信任证书颁发机构X.509证书的文件,也就是CA的证书

    • 此服务器的凭据和私钥。

    • 加密设置:如果您不懂TLS, 建议保持默认选项。

    以下是我在servera上为mirror配置的TLS

    image-20220425154635371

    • Warning: 必须输入您的服务器的私钥密码。否则会出现“错误 #2207:需要转移密钥文件密码“

    • 加密设置可以选择只用TLSv1.2

  • 使用仲裁程序: Yes, 选中。仲裁的地址格式是IP地址/子网掩码,端口默认2188

  • 使用虚拟IP: 在某些情况下,比如云部署,可能无法配置虚拟IP。请参见在线文档中相应的内容。图中使用的是前面规划的VIP地址172.16.58.100和它的网口"ens33"。

  • Failover成员的压缩模式,对于异步成员的压缩模式:

    默认的选择是“选中的系统”,中文翻译有误,应该是“System Selected",也就是系统的选择。压缩模式是指从主镜像到备用镜像的同步数据是不是要压缩传送。压缩的好处是占有更少的带宽,更低的延时,提高了接收方的响应时间。同时,发送和接收方也要相应的付出压缩解压的开销。

​ 当前的IRIS版本只在使用TLS做镜像同步时会对消息压缩。到备用镜像成员使用LZ4算法,到异步成员使用 Zstd算法。

​ 你也可以不用“系统选择”而是人工选定“不压缩”或者“压缩”。如果选择“压缩”,你还要从zlib, Zstd, LZ4里指定 使用的算法。

​ 更详细的内容,请查看在线文档中这部分内容

  • Allow Parallel Dejournaling:

    默认的选项时“Failover Memebers and DR"。其他选项还包括“Failover Members"和“All Members"。

    Parallel Dejournaling增加了镜像数据同步时的throughput。但在某些情况下,轻微的增加了查询的inconsistent。详细说明请查看在线文档中的Parallel Dejournaling说明

  • 高级设置

    • Quality of Service Timeout: 默认8000msec。您可以阅读在线文档有关QoS的章节
    • 此故障转移成员镜像专用地址: 网络规划中说的“内网地址”。
    • 此故障转移成员镜像代理地址:ISCAgent工作的地址,也就是“外网地址”。

主镜像成员信息

这里需要填入本机的信息:

  • 镜像成员名称:默认是主机名和iris实例名的组合。比如我的Linux主机名servera, iris实例名为iris, 那么默认的名称就是"SERVERA/IRIS"。您可以按您机构的命名规范修改。
  • 超级服务器地址:默认为本机的hostname,比如我的linux服务器主机名为servera,菜单里就会自动填入'servera'。但如果您网络里没有DNS服务器,或者仅仅是为了避免其他服务器无法用servera找到本机,那么如图中这样在这里直接配置IP地址也是个不错的选择。
  • 代理端口(Agent Port): 本地ISCAgent服务的TCP端口,默认2188。

检查配置结果

配置结束后您需要做的是:

  • 确认Mirror状态

    到维护界面的“系统>镜像监视器“, 您会看到如下的Mirror状态显示。

image-20220426154450827

注意:图中连接状态显示:此成员未连接仲裁程序,这是正常的。目前Mirror中只配置了一个Primary Member主成员,它不会去尝试连接Arbiter。这个方式叫Agent-Control方式。

只有在有主备都配置成功后,系统才会尝试两个mirror members和arbiter通信,成功后进入arbiter-control方式。

  • 确认Journal文件已经切换,并使用了新名称。

    在上图的窗口, 点击“镜像监视器”中的“查看镜像journal文件”按钮,可以跳转到"系统>Journals"页面。您可以发现正在工作的Journal文件从“20220426.002”换成了以“MIRROR-APRIL"开头的新文件。

    下图显示的是所有Journal文件, 而且是已经配置了journal第2天的抓图。

image-20220426154751902

  • 查看虚拟IP已经绑定在本机的“外部网络接口”上。
# 可以看到vip 172.16.58.103已经绑定在接口ens33

[root@servera ~]# ip -4 -br addr
lo               UNKNOWN        127.0.0.1/8
ens33            UP             172.16.58.101/24 172.16.58.103/24
ens36            UP             172.16.159.101/24
[root@servera ~]#

常见的故障

有2个常见的故障值得一提:

  1. 错误 #2174 创建/加入镜像组1%失败, 因为镜像日志文件%2已存在

    创建mirror的时候会修改mirror名字。可删除mirror的时候并不会把journal名字修改回去。 如果在同一天,删除了一个mirror,用相同的名字再此创建,就会出这个错误。 解决的办法:换一个mirror名字。或者删除journal (测试环境)

  2. ERROR #2086: Agent is unreachable with ens22|2188,

造成的原因是配置镜像成员时用了主机名但无法找到主机,解决要么添加DNS, 要么把配置里的hostname改成IP地址。

另外,还有出现过在主机上创建mirror会报错 “ can't access mirror-journal“, 似乎也和hostname的寻址有关,忘掉细节了, 待补。

3. 添加Backup镜像成员

您要在要第二台IRIS服务器做操作,添加这个IRIS到已有的MIRROR,然后转去主镜像(Primary Member)上去检查是否添加成功。

上一个步骤里我的演示是在servera操作的, 而以下是在Serverb上操作怎么把这个服务器上的iris加入mirror。

  • 进入管理界面"系统管理>配置>镜像配置", 启动镜像服务。

  • 进入管理界面”系统管理>配置>镜像配置>加入为故障转移“ (System Administration>Configuration>Mirror Settings>Join as Failover),

​ 您需要填写mirror name和“其他故障转移成员的信息”。简单说,要填写这个Mirror的Primary成员的信息。 包括: Primary member的Agent地址, 端口(Agent Port), IRIS实例名。 如下图所示:( 注意这里的Agent的IP地址是ens33的地址)。

image-20220427133147896

  • 这之后您会被要求配置本机作为第2个mirror成员的信息 包括:

    • 镜像成员名称: 这里用SERVERB/IRIS
    • 超级服务器地址:这里用172.16.58.102
    • 代理端口:这里用默认值2188
    • 虚拟IP的网络接口:这里用ens33
    • SSL/TLS要求:像配置主镜像成员一样配置证书。
    • 镜像专用地址: 172.16.159.102
    • 代理地址: 172.16.58.102

    以上的所有配置项的如果您还有不清楚的, 请再看看上一步的主成员的配置,他们是一致的。

Warning: 在这一步上如果看到如下的错误,说明连接servera出了问题,很大的可能是IP的连接问题,或者更可能是您在主镜像成员,或者Backup镜像成员的“超级服务器地址”的配置中,使用了主机名servera, serverb,而不是IP地址,而这个host名字底层并没有找到。如果是这样的话,在镜像配置中用IP代替主机名通常能解决问题。

错误 #2088: 使用172.16.159.101,1972无法访问ECP与镜像成员SERVERA/IRIS的连接

  • 回到servera的编辑镜像页面, 会看到最下面出现了一个“未决断成员”的组件。“允许”它并选择向serverb授权后, 这时您将看到提示信息,显示“此成员为主成员. 更改将发送给其它成员.”。

注意: 这一步只有在配置了SSL/TLS的情况下才出现。 如果没有配置SSL/TLS,主成员不需要同意授权,会自动把Backup加到Mirror里

Warning: 在主镜像成员,也就是servera的镜像编辑页面,最上面有个“添加新异步成员”的按钮,它和您当前的操作无关。您正在添加的serverb是第二个同步成员。

servera批准请求

  • 验证添加成功

    通常需要10秒钟以上的时间,两台机器会协商各自的镜像状态,会尝试连接Arbiter,成功后将镜像的自动切换模式由Agent-Control, 提升到Arbiter-Control。通常是通过查看主成员(这里是servera)的管理页面的镜像状态页面确认,如下面这张图:

image-20220427150617245

Warning: 镜像配置成功后,您还是可以登录Backup成员的维护管理页面。其中的“镜像监视器”显示的内容,如您从下图所见, 和主成员的相同页面是一致的。唯一的区别是顶部的按钮, 多了”设置no failover"和“降级为DR成员“两个按钮。 记住这一点有助于您日常维护中清楚的分辨您登录的是那个mirror成员的SMP。

image-20220427150700670

4. 添加异步(Async)成员

在需要添加入Mirror的异步成员服务器上操作,进入IRIS维护界面, 选择System>Administration>Configuration>Mirror Settings>Join as Async。如果选项为灰不可选,先启动服务。

在Join Mirror as Async页面填入创建的镜像名称,主镜像成员的信息,具体选项见上节中加入Backup成员的内容。

最后, 您需要提供本机的信息,这里要选择异步成员类型,它们是:

  • Disaster Recovery: 容灾服务器,需要的时候可以升级到Backup。
  • Read-Only Reporting: 报告服务器,只能查询,永远不能升级到Backup。
  • Read-Write Reporting:可写的报告服务器,如果您有其他的应该需要操作镜像中的数据库的话。它同样不能升级到Backup。在它上面的数据库修改不会传递到其他镜像成员。
0
0 17
讨论 (0)1
登录或注册以继续