本文主要是介绍Domino安装配置系列之六:Domino R8.0.x群集配置手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 服务器要求
- 集群中的所有服务器必须基于 IBM(R) Lotus(R) Domino(TM) Enterprise 服务器或 Domino Utility 服务器运行。
- 集群中的所有服务器必须使用高速 LAN(局域网)或高速 WAN(广域网)进行连接。也可以为集群通讯设置专用局域网。
- 集群中的所有服务器必须使用 TCP/IP 并处于相同的 IBM(R) Lotus(R) Notes(R) 命名网络中
- 集群中所有的服务器必须在同一 Domino 域中,并且共享一个公用 Domino 目录。
- 必须在包含集群的域中为 Domino 目录指定一个管理服务器。如果不指定管理服务器,那么管理进程便无法更改集群成员。管理服务器并非必须是集群的成员。
- 集群中的每个服务器必须有层次服务器标识。如果任何服务器具有平级的标识,则必须将平级标识转换为层次标识,这样才能在集群中使用它们。
- 一个服务器不能同时是多个集群的成员。
- 每个服务器必须有足够的磁盘空间,才能承担集群成员的任务。因为集群通常需要更多的数据库副本,所以集群中的服务器比非集群服务器需要更多的磁盘空间。
- 每个服务器必须具有足够的处理能力和内存容量。一般来说,集群的服务器比非集群的服务器需要更高的性能。
2. 硬件方面考虑
磁盘空间的大小和每台服务器的处理能力可以影响集群中包含的服务器数量。决定要在集群中使用的硬件时,请牢记以下几点:
-
创建的副本越多,集群复制所需的磁盘空间和处理能力就越大。
-
集群数据库目录需要的磁盘空间大约为 2M ,集群中每两千个数据库还需要 1M 额外空间。
-
集群中的服务器越多,每台服务器就需要使用更强大的处理能力与其他集群服务器进行通信。
-
在服务器上运行的服务器任务和占用大量 CPU 资源的应用程序越多,所需的处理能力就越大。
-
每台服务器不但对它所包含的数据库要有足够的处理能力,而且对可能故障转移到此服务器的任何数据库都要有足够的处理能力。
-
集群服务器需要的内存比非集群服务器更多。实际所需的内存大小取决于服务器上的活动级别。
-
要查看计算机是否需要额外的内存或处理能力,请检查平台统计信息。
-
当有大集群或工作负载很重的集群时,可能需要使用多个集群复制器来提高集群复制的性能。请检查集群复制器统计信息,以查看等候处理的数据库队列是否很长。如果很长,请一次添加一个集群复制器,直至统计信息提高到足够水平。
-
因为集群复制器占用系统资源,所以添加集群复制器时,系统的整体性能可能会下降。因此,不要添加太多的集群复制器,够用即可。
3. 前期准备
3.1 确定是否为集群创建专用局域网
要使繁忙的集群更加有效,可为集群创建专用网络。为此,请在每台集群服务器上多安装一块网卡,并通过专用集线器或切换器连接这些网络接口卡。
为集群创建专用局域网的主要原因是为了将集群在使用集群复制和服务器探测信号时所产生的网络流量独立出来。专用局域网可以将可用带宽更多地留给主局域网。如果估计可能使用大量的集群复制活动,则应创建专用局域网。
另外,还可以考虑为内部集群通讯创建专用局域网,即使在出现某种网络故障时,也可以保证集群服务器之间的通讯。通过添加专用网络,集群中的所有服务器至少由两种不同的局域网段连接。因此,如果一个局域网段上的网络插头或电缆出现故障,集群中的所有服务器之间仍然具有网络连接。这样就可以确保集群服务器相互之间仍保持联系,并继续进行集群复制以保持数据库同步。
如果为集群创建专用局域网,必须将所有的集群成员同时连接到专用局域网(用于内部集群通讯)和主局域网(用于客户机访问)。
3.2 为每块网卡指定IP
输入命令smit tcpip ,出现以下图:
选择“Minimum Configuration & Startup” ,进入如下画面:
选择相应的网卡,如en0 或en1, 输入回车,如下图:
填写相关IP 设置信息,输入回车。返回信息如下图:
IP 设置完成。
使用以上方法设置其他网卡
设备 | 网卡设备名 | IP 地址 | 主机名 |
服务器01 | en0 | 10.1.177.18 | dev01.acme.com |
| en1 | 10.1.177.28 | clunode01 |
服务器02 | en0 | 10.1.177.19 | dev02.acme.com |
| en1 | 10.1.177.29 | clunode02 |
3.3 测试 IP 与主机名是否生效
在每台服务器上输入以下命令
ping 10.1.177.18
ping 10.1.177.19
ping 10.1.177.28
ping 10.1.177.29
ping dev01.acme.com
ping dev02.acme.com
ping clunode01
ping clunode02
请确认以上在两台服务器之间均能ping 通。
4. 安装Domino Server R8.02
参考 http://blog.csdn.net/SquallZhong/archive/2009/09/21/4575019.aspx
5. 配置集群
5.1 为每台服务器添加cluster端口
项目 | 值 |
端口 | CLUSTER |
协议 | TCP |
Notes 网络 | 集群网络 |
网络地址 | clunode01 clunode02 |
启用 | ENABLED |
为DevSVR01 添加端口,打开公共地址本,相应服务器文档,如下图:
以相同的方法为DevSVR02 添加端口,网络地址为clunode02 。
5.2 从相应的子网中为每个端口分配一个 IP 地址
修改DevSVR01 的notes.ini ,输入如下命令:
vi /data2/devsvr01/notes.ini
修改如下图:
从相应的子网中为每个端口分配一个 IP 地址,并且将此信息以下列格式置于 NOTES.INI 文件中:
PORT1_ TcpIPAddress=0, a.b.c.d :1352
PORT2_ TcpIPAddress=0, e.f.g.h :1352
其中 PORT1 和 PORT2 是端口名称,而 a.b.c.d 和 e.f.g.h 是这些端口的 IP 地址。
例如,如果端口名称为 TCPIP 和 CLUSTER ,则这些信息可能是:
TCPIP_TcpIPAddress=0,192.114.32.5:1352
CLUSTER_TcpIPAddress=0,192.168.64.1:1352
以相同的方法设置DevSVR02 的notes.ini 。
5.3 确保所有集群通讯使用此集群通讯端口
将下列行添加到 NOTES.INI 文件中: Server_Cluster_Default_Port= Cluster Port
其中 Cluster Por 是为集群创建的端口。在本样例中,此行应为:
Server_Cluster_Default_Port=CLUSTER
这将确保所有集群通讯使用此集群通讯端口,而不管该端口所在的顺序。
注意:使用 Server_Cluster_Default_Port 设置将端口分配到集群通讯的专用局域网的方法存在一个缺点。如果集群服务器在此端口上连接时遇到问题,它将尝试另一个端口。因此,该服务器将能够与其他集群服务器进行通讯或复制。在该服务器可以与集群再次通讯之前,必须解决网络问题或从 NOTES.INI 文件中删除此设置。5.4 创建集群
打开DevSVR01/ChemChina 服务器上的names.nsf ,打开服务器视图,先中所有要加入至集群的服务器文档,单击”Add Cluster” 按钮,如下图:
出现对话框后,单击“是”,出现如下图:
选择“Create New Cluster” ,单击“确定”,弹出输入集群名称对话框,如下图:
输入集群名称:ClusterDev ,点击“确定”,出现以下图:
点击“是”,立即执行;
点击“否”,由服务器管理进程执行
Domino 集群已创建成功,在控制台使用以下命令将地址本同步至DevSVR02 上;
Repl devsvr02/chemchina names.nsf
完成后,重启所有集群中的服务器。
5.4 验证集群
重启服务后,domino 会自动启动两个服务-- Cluster Replicator 和Cluster Director 服务。在控制台输入show task ,如下图:
输入show cluster ,查看群集状态,如下图:
如果availability index 为无效,则说明服务器宕机我停止服务,或当前服务器无法连接至相关服务器。确认Server cluster default port 是否为你指定的集群通讯端口。
6. 其他调整
6.1 关闭Domino模板的群集复制
为了减少集群之间服务器的复制流量,标准的模板或没有在集群之间部署的数据库都应该关闭集群复功能,需要时再打开。使用Domino Administrator 进行设置,如下图:
在工具面板中选择“集群”->“ 禁用集群复制”,点击确定,即可。
6.2 用于集群复制的 Tell 命令
命令 | 显示的信息 | 用途 |
tell clrepl dump |
|
|
tell clrepl dump server |
|
|
tell clrepl dump retry |
|
|
tell clrepl pause | 暂停集群复制器 | |
tell clrepl resume | 继续集群复制器 | |
tell clrepl retry | 强制集群复制器立即重试失败的复制 | |
tell clrepl refresh | 强制集群复制器立即更新集群数据库目录信息 | |
tell clrepl log | 强制集群复制器立即记录 | |
show stat server.cluster* | 查看集群管理器事件和统计信息 | |
show stat replica.cluster* | 查看集群复制事件和统计信息 |
6.3 注意事项
集群目录数据库(cldbdir.nsf) 在所有集群服务器上必须的一致。如果不一致时,使用复制功能,手工强制复制。
7. Domino 集群中的工作负载平衡
为 Lotus Domino 服务器创建集群还提供活动的负载平衡,从而更好地利用资源。我们可以通过以下步骤在 Domino 服务器之间实现工作负载平衡:
-
限制每个服务器的工作负载(更改服务器可用性阈值)
-
更改可以同时访问某个服务器的最大用户数
-
将数据库移动(分发)到其他服务器
-
在集群中计划和放置副本,为繁忙的数据库创建更多的副本
-
向集群添加一个或多个服务器
-
使用 Activity Trends 工具分析集群的情况并提供建议
一定要记住,工作负载平衡并不能解决企业的总体计算能力匮乏问题。如果您的 Domino 服务器目前已经不堪重负,并且没有额外的服务器处理更多的负载,那么启用工作负载平衡也不能解决问题。
要平衡工作负载,必须能够将超载的服务器的过剩负载发送到其他服务器。如果没有接受过剩负载的服务器,那么这些负载还得由原来的服务器处理。
不过要注意,为每个请求查找另一个可用的服务器增加了服务器的工作负载。如果您的企业没有足够的计算能力,可以考虑增加处理器或内存,或者升级设备以处理更多的负载。
如果您的集群的负载一般都比较平均分布,那么可以仅考虑配置故障转移,而不需配置工作负载平衡。
7.1 服务器可用性指数
服务器可用性指数是管理工作负载平衡的重要设置;因此,为了实现高效的工作负载平衡,我们需要了解什么是工作负载平衡以及如何计算它。集群中的每个服务器都定期根据服务器最近处理请求的响应时间确定其工作负载。工作负载由 0 至 100 的数字表示,0 表示服务器的负载非常繁忙,而 100 表示服务器的负载很轻松。这个数字称为服务器可用性指数。服务器可用性指数随着响应时间的变长而下降。
服务器可用性指数大约等于服务器可用计算能力百分比。例如,如果服务器可用性指数为65,那么您的服务器大约有 65% 的计算能力是可用的。
尽管企业中的各个服务器在计算能力上可能不同,但可用性指数在每个服务器上都表示相同的含义 —— 服务器中仍然可用的计算能力。
7.2 膨胀系数
服务器的可用性指数基于一个表示服务器的当前工作负载的膨胀系数。膨胀系数取决于特定类型的事务的最近响应时间与服务器以前处理该事务时所用的最小时间之比。例如,如果服务器当前执行 Database Open 事务的平均响应时间为 12 微秒,但是服务器以前处理 Database Open 事务的最小时间为 3 微秒,那么 Database Open 事务的膨胀系数应该为 4(用当前的 12 微秒除以最快响应时间 3 微秒)。
换句话说,膨胀系数决定当前完成某个事务比最佳条件下完成该事务要延长多少时间。
Lotus Domino 将每种类型事务的最小完成时间储存在内存和 LOADMON.NCF 文件中,服务器每次启动时都会读取该文件中的信息。当服务器关闭时,Lotus Domino 将使用最新的信息更新 LOADMON.NCF 文件。
为了确定当前的膨胀系数,Lotus Domino 在一段特定的时间内跟踪最常用的 Domino 事务,默认情况下每次跟踪时长为 15 秒,跟踪次数为 5 次。
然后,Lotus Domino 确定它完成每种类型的事务所需的平均时间,然后用它以前完成相同事务的最小时间除该时间。通过这种方式可以确定每种类型的事务的膨胀系数。
为了确定整个服务器的膨胀系数,Lotus Domino 将求取所有类型事务的膨胀系数的平均值,并且增加最常用的事务类型的权重。
随着服务器变得越来越繁忙,添加额外的负载会对性能和可用性产生更大的影响。换句话说,向繁忙的服务器添加额外的工作负载比向不那么繁忙的服务器添加额外的工作负载得到更大的膨胀系数。
由于服务器的速度、容量和计算能力不同,因此它们能够处理的工作负载量也不同。因此,在两个不同的服务器上,相同的膨胀系数不一定表示它们拥有相同的工作负载。
例如,如果一个小型服务器在空闲时需要很长时间执行事务,那么膨胀系数为 40 可能表明用户需要等待很长时间。但是,在更大更快的服务器上,即使膨胀系数为 400,用户需要等待的时间可能也会少于 1 秒。
可用性指数和膨胀系数对比
为了确定服务器的可用性指数,Lotus Domino 使用一个公式将膨胀系数转换成服务器的可用计算能力的近似值。
膨胀系数 | 可用性指数 |
1 | 100 |
2 | 83 |
4 | 67 |
8 | 50 |
16 | 33 |
32 | 17 |
64 | 0 |
注意:膨胀系数和可用性指数仅度量服务器的响应时间,服务器响应时间通常只是客户端经历的响应时间的一小部分。例如,客户端和服务器之间的网络响应时间在客户端经历的响应时间中占据很大比重。
更改表示服务器满载的膨胀系数值
为了让 Domino 工作负载平衡更高效,您必须调整膨胀系数和可用性指数之间的关系,让服务器在达到您指定的工作负载时执行故障转移。您可以通过指定表示服务器满载的膨胀系数值来实现这个目的。在 Lotus Domino 服务器中,默认值为 64 。当膨胀系数达到这个值时,就认为服务器已经满载,这时它的可用性指数就下降到 0 。
技巧:您可以通过 Show AI 服务器命令查看推荐的可用性指数设置。
如果您的服务器非常强劲快速,您可以增加表示服务器满载的膨胀系数值。在一些非常快的服务器上,您可以将该值设置为几百或更高。如果您的服务器很慢,则可以考虑降低膨胀系数值。
要更改表示服务器满载的膨胀系数值,请遵循以下步骤:
SERVER_TRANSINFO_RANGE=n
注:对于 n 值,您可以选择一个数字,让 2 的 n 次方等于您希望表示服务器满载的膨胀系数值。 n 的默认值为 6 ,那么得出的膨胀系数值为 64 (因为 2 的 6 次方等于 64 )。
如果您将 SERVER_TRANSINFO_RANGE 设置为 7 ,那么表示服务器满载的膨胀系数值则为 128 。如果将该参数设置为 8 ,那么膨胀系数值就变成 256 。
为了确定 SERVER_TRANSINFO_RANGE 的最佳值,请遵循以下步骤:
- 在服务器繁忙使用期间使用控制台命令 show stat server.expansionfactor 监控它的膨胀系数。您还可以在此期间监控性能统计数据。在繁忙时期记录足够的膨胀系数值,以确定表示服务器满载时的膨胀系数值。
- 为 SERVER_TRANSINFO_RANGE 确定一个值,将该值作为 2 的指数得出的结果应该为您在步骤 1 中选择的膨胀系数值。当更改表示服务器满载的膨胀系数值时,膨胀系数和可用性指数之间的关系就会发生变化。
膨胀系数 | 可用性指数 |
1 | 100 |
2 | 88 |
4 | 75 |
8 | 63 |
16 | 50 |
32 | 38 |
64 | 25 |
128 | 13 |
256 | 0 |
- 使用服务器控制台命令 Show AI 为该变量获取一个适当的值。在带负载运行服务器一段时间之后输入命令,控制台将显示该服务器的膨胀系数历史和 AI 。
改变用于计算膨胀系数的数据量
尽管一般情况下没有必要这样做,但是您可以使用下面的 Notes.ini 设置更改Lotus Domino 收集用于计算膨胀系数的数据量。
更改数据收集周期的次数:
Server_Transinfo_Max=x
其中 x 是您希望 Lotus Domino 使用的收集周期次数。
更改数据收集周期的时间长度:
Server_Transinfo_Update_I nterval=x
其中 x 是每个周期的时长,单位为秒。
7.3 与工作负载平衡相关的统计数据
项目 | 描述 |
Server.AvailabilityIndex | 服务器可用性指数的当前值。可用性指数的值的范围是 0 至 100 。 0 表示服务器没有可用资源。 100 表示服务器完全可用 |
Server. Expansion Factor | 服务器膨胀系数的当前值。该值用于计算可用性指数。值为 1 时表示服务器以最小时间完成事务。值为 64 时表示完成事务所需的时间是最小时间的 64 倍。默认情况下,膨胀系数为 64 时表示服务器满载,转换成可用性指数为 0 。您可以通过 Notes.ini 设置的 Server_Transinfo_Range 更改表示服务器满载的膨胀系数。 您可以使用服务器命令 Show AI 获取推荐的可用性指数。 |
Server.Cluster.OpenRedirects. LoadBalance.Successful | 繁忙服务器成功将客户端重定向到另一个集群成员的次数 |
Server.Cluster.OpenRedirects.LoadBalance. Unsuccessful | 繁忙服务器没有成功将客户端重定向到另一个集群成员的次数。如果目标服务器的状态为繁忙或不可用,那么重定向将不成功 |
Server.Cluster.OpenRequest.ClusterBusy | 当所有集群服务器都处于繁忙状态时繁忙服务器尝试重定向客户端请求的次数 |
Server.Cluster.OpenRequest.LoadBalanced | 用户试图打开状态为繁忙的服务器的数据库的次数 |
对比集群中的所有服务器的这些数据,然后更改负载没有良好平衡的服务器的可用性阈值。
技巧 :工作负载平衡并不是为企业提供足够计算资源的代替办法。如果所有服务器已经超载,那么启用负载平衡会带来更多问题,因为没有存放繁忙服务器重定向的客户端请求的地方。另外,查找可用服务器会降低处于繁忙状态下的服务器的性能。
7.4 设置服务器的最大用户数
您还可以通过 Notes.ini 设置服务器的最大用户数实现集群工作负载平衡:
Server_MaxUsers=n
该设置指定服务器同时允许的最大活动用户数量。当服务器达到该极限时,服务器就进入 MAXUSERS 状态,并在活动用户数降到 Server_MaxUsers 极限以下之前拒绝任何用户请求。
当 Lotus Domino 服务器因为处于 MAXUSERS 状态而拒绝访问请求时,Cluster Manager 就试图将请求重定向到另一个包含正确副本的集群服务器。如果其他服务器都不可用,Lotus Domino 将拒绝访问请求并显示一条解释性消息。
另外,您可以通过监控中的统计数据更好地管理集群。除了 AvailabilityIndex 之外,统计数据 AvailabilityThreshold 和 ExpansionFactor 的名称都包含前缀 Server.Cluster ,但省去了这个前缀。
AvailabilityIndex 、AvailabilityThreshold 和 ExpansionFactor 都包含前缀“Server.” 。
注意:Server_MaxUsers 设置不会影响复制。即使服务器处于 MAXUSERS 状态时仍然会发生复制。
7.5 用于集群管理的更多统计数据
统计数据名称 | 说明 |
Member | 显示集群中的服务器的名称和可用性指数。 |
AvailabilityIndex | 度量服务器可用性的方法之一。 0 表示没有可用资源; 100 表示服务器的所有资源完全可用。 |
AvailabilityThreshold | 服务器当前的可用性阈值。当可用性指数小于等于可用性阈值时,服务器将进入繁忙状态。 |
ExpansionFactor | 服务器当前的膨胀系数。该值用于计算可用性指数。值为 1 时表示该服务器以最小的时间完成事务。值为 64 时表示该服务器完成事务所需的时间比最小时间长 64 倍。默认情况下,膨胀系数为 64 时表示服务器满载,而转换成可用性指数则为 0 。 |
OpenRedirects.Failover.Successful | 在客户端通过副本 ID 打开数据库失败之后,服务器成功将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.Failover.Unsuccessful | 在客户端通过副本 ID 打开数据库失败之后,服务器不能将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.FailoverByPath.Successful | 在客户端通过路径名打开数据库失败之后,服务器成功将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.FailoverByPath.Unsuccessful | 在客户端通过路径名打开数据库失败之后,服务器不能将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.LoadBalance.Successful | 在服务器处于繁忙状态时客户端通过副本 ID 打开数据库失败之后,服务器成功将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.LoadBalance.Unsuccessful | 在服务器处于繁忙状态时客户端通过副本 ID 打开数据库失败之后,服务器不能将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.LoadBalanceByPath.Unsuccessful | 在服务器处于繁忙状态时客户端通过路径名打开数据库失败之后,服务器不能将客户端重定向到另一个集群成员所需的总时间。 |
OpenRedirects.LoadBalanceByPath.Successful | 在服务器处于繁忙状态时客户端通过路径名打开数据库失败之后,服务器成功将客户端重定向到另一个集群成员所需的总时间。 |
OpenRequest.ClusterBusy | 当所有服务器 处于繁忙状态时的客户端请求总数。 |
OpenRequest.DatabaseOutOfService | 客户端尝试打开标记为不可用的服务器上的数据库所需的总时间。 |
OpenRequest.LoadBalanced | 客户端尝试打开标记繁忙的服务器上的数据库所需的总时间。 |
PortName | 用于内部集群网络通信的默认端口,或一个星号,表示没有可以的默认端口或其他活动端口。 |
ProbeCount | 服务器查找其他集群成员所需的总时间。 |
ProbeError | 一个服务器查找另一个服务器时收到的错误。 |
ProbeTimeout(mins) * | 显示发生集群内部查找集群成员的时间间隔。 |
7.6 集群复制器统计数据
统计数据名称 | 说明 |
Servers | 从该服务器接收复制的所有集群成员 |
Successful | 服务器启动之后的所有成功复制 |
Failed | 服务器启动之后的所有失败复制 |
Docs.Added | Cluster Replicator 添加的所有文档 |
Docs.Updated | Cluster Replicator 更新的所有文档 |
Docs.Deleted | Cluster Replicator 删除的所有文档 |
Files. Local | 存在当前服务器中并且在集群中的其他服务器上拥有副本的数据库数 |
Files.Remote | Cluster Replicator 用于执行更改并且在其他服务器上的数据库数 |
Retry.Skipped | Cluster Replicator 没有尝试复制数据库的总时间。当目标服务器不可用或正在等待另一个重试请求时忽略的重试次数 |
Retry.Waiting | 等待重试的副本数 |
SecondsOnQueue | 最后复制的数据库在工作队列中的时间,以秒为单位 |
SecondsOnQueue.Avg | 数据库在工作队列中的平均时间,以秒为单位 |
SecondsOnQueue.Max | 数据库在工作队列中的最长时间,以秒为单位 |
SessionBytes.In | 集群复制期间接收的总字节数 |
SessionBytes.Out | 集群复制期间发送的总字节数 |
WorkQueueDepth | 正在等待通过 Cluster Replicator 进行复制的数据库数 |
WorkQueueDepth.Avg | 自从服务器启动之后的平均工作队列长度 |
WorkQueueDepth.Max | 自从服务器启动之后的最大工作队列长度 |
下载PDF格式
这篇关于Domino安装配置系列之六:Domino R8.0.x群集配置手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!