# 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里指定 使用的算法。 ​ 更详细的内容,请查看[在线文档中这部分内容](https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?KEY=GHA_mirror_set#GHA_mirror_set_bp_mirror_traffic) - Allow Parallel Dejournaling: 默认的选项时“Failover Memebers and DR"。其他选项还包括“Failover Members"和“All Members"。 Parallel Dejournaling增加了镜像数据同步时的throughput。但在某些情况下,轻微的增加了查询的inconsistent。详细说明请查看[在线文档中的Parallel Dejournaling说明](https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?KEY=GHA_mirror_set_config#GHA_mirror_set_bp_parallel_dejournal) - 高级设置 - Quality of Service Timeout: 默认8000msec。您可以阅读[在线文档有关QoS的章节](https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?KEY=GHA_mirror_set_config#GHA_mirror_set_tunable_params_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已经绑定在本机的“外部网络接口”上。 ```sh # 可以看到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批准请求](/sites/default/files/inline/images/image-20220427144800614.png) - 验证添加成功 通常需要10秒钟以上的时间,两台机器会协商各自的镜像状态,会尝试连接Arbiter,成功后将镜像的自动切换模式由Agent-Control, 提升到Arbiter-Control。通常是通过查看主成员(这里是servera)的管理页面的镜像状态页面确认,如下面这张图: ![image-20220427150617245](/sites/default/files/inline/images/image-20220427150617245.png) > 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。在它上面的数据库修改不会传递到其他镜像成员。