因为篇幅太长, 我把它分为3篇贴在社区
配置Mirror前要准备三件事儿:
我假设您在动手前一定已经对Mirror的原理和架构已经不陌生了,对镜像成员,DR(灾备)成员, Arbiter, ISCAgent等术语已经自动切换的概念有大概的认识。如果不是这样,请先阅读在线文档,或者这篇文章。
Mirror应该配置两个网断:一个用于IRIS和外部的通信;另一个用于两个Mirror成员间的内部通信,也就是数据的同步。 尽管不是必须的,但Mirror作为一个高可用方案,为了保证服务器之间的内部通信不受和外部连接的干扰,把内部通信放在单独的网段是通常的做法,尤其是在生产环境。
下图来自IRIS的在线文档:其中绿色所示的是IRIS提供服务的网段,IRIS到所有外部系统的连接,ECP应用服务器,和Arbiter在工作在这个网段。紫色的“Data Center Private LAN for Mirror Communication"用于内部通信,准确的说, 用于journal的同步。为了方便, 我会在后面的步骤中简单的把这两个网段简单的称为外网网段和内网网段。

也是来自在线文档,上图的IP地址配置像这个样子。(请忽略C栏和D栏,它们是DR服务器的地址)

在安装配置Mirror之前, 您需要检查的是:
( Agent address用的是公网地址,但书上有句话:When attempting to contact this member’s agent, other members try this address first. Critical agent functions (such as those involved in failover decisions) will retry on the mirror private and superserver addresses (if different) when this address is not accessible. Because the agent can send journal data to other members, journal data may travel over this network. )
下面是我用的两个服务器的网络配置,因为不方便使用(懒的修改)上图的地址,我自己做的地址配置如下
| Virtual IP Address | ||
|---|---|---|
| Arbiter Address | 172.16.58.100 | |
| Member-Specific Mirror Address | serverA | serverB |
| SuperServer Address | 172.16.58.101 | 172.16.58.102 |
| Mirror Private Address | 172.16.159.101 | 172.16.159.102 |
| Agent Address | 172.16.58.101 | 172.16.58.102 |
其中172.16.58.0网段为外网网段; 172.16.159.0网段为内网网段。 在操作系统上查看IP, 是这个样子:
servera
- #servera上的端口配置
- [root@servera mgr]# ip -4 -br addr
- lo UNKNOWN 127.0.0.1/8
- ens33 UP 172.16.58.101/24
- ens36 UP 172.16.159.101/24
- [root@servera mgr]# firewall-cmd --list-ports
- 1972/tcp 52773/tcp 2188/tcp
- [root@servera ~]#
-
-
- #serverb上的端口配置
- [root@serverb isc]# ip -4 -br addr
- lo UNKNOWN 127.0.0.1/8
- ens33 UP 172.16.58.102/24
- ens36 UP 172.16.159.102/24
- [root@serverb isc]# # firewall-cmd --list-ports
- 1972/tcp 52773/tcp 2188/tcp
无论是同步成员,异步成员,还是Arbiter,它们之间的通信都依赖ISCAgent服务。在操作系统上,它是一个独立于IRIS的服务,IRIS的默认安装也没有把它设置为自动启动,所以您需要在安装IRIS的机器,也就是同步,异步成员上手工启动这个服务。至于Arbiter,您可以理解Arbiter就是一个装了ISCAgent服务的机器,可以是任何一台客户的机器,装上ISCAgent, 能帮助IRIS主备成员自动切换判断,它就是Arbiter了。简单说, 您需要
Arbiter需要和IRIS服务器用相同的操作系统吗?没必要。很多客户的IRIS装在Linux上,而Arbiter是一个Windows机器, 跑着和IRIS无关的业务, 都不用是Server版的Windows。
默认配置下, ISCAgent通过TCP的2188端口和远端连接,启动ISC Agent后请检查防火墙,保证2188端口访问是可以访问的。
下面是具体的配置细节。
IRIS服务器不需要单独安装ISCAgent。 你需要做的是启动服务,并服务器重启后ISCAgent能自动启动。

- [root@servera isc]# systemctl start ISCAgent
- [root@servera isc]# systemctl status ISCAgent
- ● ISCAgent.service - InterSystems Agent
- Loaded: loaded (/etc/systemd/system/ISCAgent.service; disabled; vendor preset: disabled)
- Active: active (running) since Fri 2022-04-15 10:26:20 CST; 11s ago
- Process: 3651 ExecStart=/usr/local/etc/irissys/ISCAgent (code=exited, status=0/SUCCESS)
- Main PID: 3653 (ISCAgent)
- CGroup: /system.slice/ISCAgent.service
- ├─3653 /usr/local/etc/irissys/ISCAgent
- └─3654 /usr/local/etc/irissys/ISCAgent
-
- Apr 15 10:26:20 servera systemd[1]: Starting InterSystems Agent...
- Apr 15 10:26:20 servera systemd[1]: Started InterSystems Agent.
- Apr 15 10:26:20 servera ISCAgent[3653]: Starting
- Apr 15 10:26:20 servera ISCAgent[3654]: Starting ApplicationServer on *:2188
- [root@servera isc]#systemctl enable ISCAgent
- Created symlink from /etc/systemd/system/multi-user.target.wants/ISCAgent.service to /etc/systemd/system/ISCAgent.service.
- [root@servera isc]#
你需要到WRC的下载网址下载ISCAgent的软件。下面是在Linux下安装ISCAgent的过程。
- [root@serverc isc]# cd ISCAgent-2022.1.0.164.0-lnxrh7x64
- [root@serverc ISCAgent-2022.1.0.164.0-lnxrh7x64]# ls
- agentinstall cplatname dist package tools
- [root@serverc ISCAgent-2022.1.0.164.0-lnxrh7x64]# ./agentinstall
-
- Your system type is 'Red Hat Enterprise Linux (x64)'.
-
- Please review the installation options:
- ------------------------------------------------------------------
- ISCAgent version to install: 2022.1.0.164.0
- ------------------------------------------------------------------
-
- Do you want to proceed with the installation
? yes -
- Starting installation...
-
- Installation completed successfully
- [root@serverc ISCAgent-2022.1.0.164.0-lnxrh7x64]
安装后同上一小节使用systemctl命令启动。
您的每个服务器需要准备两个证书:一个本机的证书, 一个是CA的证书。(如果是公开证书也要吗,openssl应该是没有,除非自己去下载)。 如果您使用的是IRIS自带的PKI签发的self-signed证书,那么每台服务器不仅仅要自己的证书,非CA所在的服务器要:“获取证书颁发机构证书”(‘Get Certificate Authority Certificate’)。这个选项“证书颁发机构客户端的”从证书颁发机构获取证书页面。
举例: servera, serverb为镜像成员。
- [root@servera mgr]# ls *.cer *.key
- iris.key iscCA.cer iscCASigned.cer iscCASigned.key
忽略iris.key。 其他的iscCA.cer是CA的证书, iscCASigned.cer是servera的证书, iscCASigned.key是servera的私钥。
同样, 在serverb:
- [root@serverb ~]# cd /isc/iris/mgr
- [root@serverb mgr]# ls *.cer *.key
- iris.key iscCA.cer iscCASignedserverb.cer iscCASignedserverb.key
- [root@serverb mgr]#
建议在配置Mirror时增加 generic memory heap 的尺寸。这个后面再补充。
后面我们进入正式的Mirror的配置工作。Mirror的配置和把数据库添加入镜像。