Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南

设置 HADB 前的准备工作

本节包括以下主题:

先决条件

设置和配置 HADB 之前,请确保您的环境满足以下要求:

配置网络冗余

配置冗余网络后,即使单个网络出现故障,HADB 也仍然可用。您可以使用以下两种方法配置冗余网络:

设置网络多路径

设置网络多路径之前,请参阅《IP Network Multipathing Administration Guide》。

Procedure配置已使用 IP 多路径的 HADB 主机:

  1. 设置网络接口故障检测时间。

    为了使 HADB 能够正确支持多路径故障转移,网络接口故障检测时间不能超过 1 秒(1000 毫秒),此时间由 /etc/default/mpathd 中的 FAILURE_DETECTION_TIME 参数指定。如果此参数的原始值较高,请编辑文件并将此参数值更改为 1000:


    FAILURE_DETECTION_TIME=1000

    要使所作的更改生效,请使用以下命令:


    pkill -HUP in.mpathd
  2. 设置 IP 地址以用于 HADB。

    如《IP Network Multipathing Administration Guide》中所述,多路径功能涉及将物理网络接口分组为多路径接口组。在此类组中,每个物理接口均包含两个与其关联的IP 地址:

    • 用于传输数据的物理接口地址。

    • 仅供 Solaris 内部使用的测试地址。

    当您使用 hadbm create --hosts 时,请仅从多路径组指定一个物理接口地址。


示例 2–1 设置多路经

假设具有两个名为 host1 和 host2 的主机。如果它们分别具有两个物理网络接口,则将这两个接口作为一个多路径组进行设置。在每个主机上运行 ifconfig -a

host1 上的输出为:


bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER>
mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00 broadcast 129.159.115.255

bge1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> 
mtu 1500 index 6 inet 129.159.115.13 netmask ff000000 broadcast 129.159.115.255

host2 上的输出为:


bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> 
mtu 1500 index 3 inet 129.159.115.21 netmask ff000000 broadcast 129.159.115.255

bge1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> 
mtu 1500 index 4 inet 129.159.115.23 netmask ff000000 broadcast 129.159.115.255

在此示例中,两个主机的物理网络接口都在 bge0bge1 之后列出。在 bge0:1bge1:1 之后列出的接口是多路径测试接口(它们在 ifconfig 输出中标记为 DEPRECATED),如同在《IP Network Multipathing Administration Guide》中所介绍的那样。

要在此环境中设置 HADB,请从每个节点选择一个物理接口地址。在此示例中,HADB 在 host1 中使用 IP 地址 129.159.115.10,在 host2 中使用 129.159.115.20。要在每台主机上使用一个数据库节点创建数据库,请使用命令 hadbm create --host。例如


hadbm create --host 129.159.115.10,129.159.115.20

要在每台主机上使用两个数据库节点创建数据库,请使用命令:


hadbm create --host 129.159.115.10,129.159.115.20,
129.159.115.10,129.159.115.20

在这两种情况下,必须使用单独的参数配置 host1 和 host2 上的代理,以指定代理所应使用的计算机的接口。因此,在 host1 上使用以下命令:


ma.server.mainternal.interfaces=129.159.115.10

在 host2 上使用以下命令:


ma.server.mainternal.interfaces=129.159.115.20

有关 ma.server.mainternal.interfaces 变量的信息,请参见配置文件


配置双网络

要启用 HADB 以允许单个网络故障,请使用 IP 多路径(如果操作系统 [例如 Solaris] 支持)。请勿在 Windows Server 2003 上将 HADB 配置为使用双网络—此操作系统在双网络配置下无法正常工作。

如果您没有将操作系统配置为使用 IP 多路径,并且已为 HADB 主机配备两个 NIC,则可以将 HADB 配置为使用双网络。对于每台主机,每个网络接口卡 (network interface card, NIC) 的 IP 地址必须位于单独的 IP 子网中。

在数据库中,所有节点均必须连接到单个网络,或者所有节点均必须连接到两个网络。


注 –

必须将子网之间的路由器配置为可以在子网之间转发 UDP 多址广播消息。


创建 HADB 数据库时,请使用 –hosts 选项来指定每个节点的两个 IP 地址或主机名:每个 NIC IP 地址一个。对于每个节点,第一个 IP 地址位于 net-0,第二个位于 net-1。 语法如下所示,其中同一节点的主机名使用加号 (+) 分隔:

--hosts=node0net0name+node0net1name
,node1net0name+node1net1name
,node2net0name+node2net1name
, ...

例如,以下变量可创建两个节点,每个节点具有两个网络接口。以下主机选项用于创建这些节点:

--hosts 10.10.116.61+10.10.124.61,10.10.116.62+10.10.124.62

因此,网络地址如下

请注意,10.10.116.6110.10.116.62 位于同一子网;10.10.124.6110.10.124.62 位于同一子网。

在此示例中,管理代理必须使用同一子网。因此,必须设置配置变量 ma.server.mainternal.interfaces,例如设置为 10.10.116.0/24。此设置对本示例中的两个代理均可使用。

配置共享内存和信号

安装 HADB 之前,必须配置共享内存和信号。此过程取决于您的操作系统。

Procedure在 Solaris 上配置共享内存和信号

  1. 以 root 用户身份登录。

  2. 配置共享内存。

    shmmax 的值设置为 HADB 主机上物理内存的大小。共享内存段的最大大小必须大于 HADB 数据库缓冲池的大小。例如,对于具有 2 GB(十六进制数 0x8000000)主内存的计算机,请将以下内容添加到 /etc/system 文件:


    set shmsys:shminfo_shmmax=0x80000000
     set shmsys:shminfo_shmseg=20

    在 Solaris 9 和更高版本上,shmsys:shminfo_shmseg 是过时的属性。

    shminfo_shmmax 设置为系统的内存总数(在十六进制记数法中,所显示的值 0x80000000 表示 2 GB 内存)。


    注 –

    使用内存大小的十六进制值指定 shmsys:shminfo_shmmax 的值。要确定主机的内存,请使用以下命令:


    prtconf | grep Memory

  3. 配置信号。

    检查 /etc/system 文件以查找信号配置条目。此文件可能已包含 semmnisemmnssemmnu 条目。例如:


    set semsys:seminfo_semmni=10
    set semsys:seminfo_semmns=60
    set semsys:seminfo_semmnu=30

    如果这些条目已存在,请在这些值上分别加上 16、128 和 1000。这样,上面示例中的条目将更改为:


    set semsys:seminfo_semmni=26
    set semsys:seminfo_semmns=188
    set semsys:seminfo_semmnu=1030

    如果 /etc/system 文件不包含这些条目,请将它们添加到该文件的结尾:


    set semsys:seminfo_semmni=16
    set semsys:seminfo_semmns=128
    set semsys:seminfo_semmnu=1000

    这足以满足在计算机上运行多达 16 个 HADB 节点的要求。有关设置超过 16 个节点的信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q1 Performance Tuning Guide》中的 HADB 一章。

  4. 重新引导计算机。

Procedure在 Linux 上配置共享内存

  1. 以 root 用户身份登录。

  2. 编辑文件 /etc/sysctl.conf

  3. 设置 kernel.shmaxkernel.shmall 参数。

    kernel.shmax 参数定义了共享内存段的最大大小(以字节为单位)。kernel.shmall 参数设置了在系统上可以一次使用的共享内存的总数(以页为单位)。将这两个参数的值设为计算机上的物理内存量。请以十进制字节数指定该值。例如,对于具有 512 MB 物理内存的计算机:


    kernel.shmmax=536870912
     kernel.shmall=536870912
  4. 重新引导计算机。使用以下命令:

    sync; sync; reboot

适用于 Windows 的过程

Windows 并不需要任何特殊的系统设置。但是,如果要使用现有 J2SE 安装,请将 JAVA_HOME 环境变量设置为安装 J2SE 所在的位置。

同步系统时钟

必须使 HADB 主机上的时钟同步,因为 HADB 使用基于系统时钟的时间戳。HADB 使用系统时钟管理超时并为记录到历史文件的事件标上时间戳。由于 HADB 是分布式系统,因此对于故障排除,您必须对所有历史文件一起进行分析。所以,使所有主机的时钟同步非常重要。

请勿在 HADB 系统处于运行状态时调整其系统时钟。这样做会导致操作系统或其他软件组件出现问题,而这些问题反之会导致系统出现诸如 HADB 节点挂起或重新启动等问题。将时钟调慢可能导致某些 HADB 服务器进程因时钟的调整而挂起。

要使时钟同步:

如果 HADB 检测到时钟调整超过一秒钟,则将该数据记录到节点历史文件中,例如:

NSUP INF 2003-08-26 17:46:47.975 Clock adjusted.
 Leap is +195.075046 seconds.

文件系统支持

本节介绍对某些文件系统的 HADB 限制。

Red Hat Enterprise Linux

在 Red Hat Enterprise Linux 3.0 上,HADB 支持 ext2 和 ext3 文件系统。对于 Red Hat Enterprise Linux 2.1,HADB 支持 ext2 文件系统。

Veritas 文件系统

在 Solaris 上使用 Veritas 文件系统时,HADB 将向历史文件写入消息 "WRN: Direct disk I/O mapping failed"。此消息指出:HADB 无法打开用于数据和日志设备的直接输入/输出 (input/output, I/O)。直接 I/O 可以减少写入磁盘页面的 CPU 耗时。它还可以降低管理操作系统中的“脏”数据页面的系统开销。

要结合使用直接 I/O 和 Veritas 文件系统,请执行以下操作之一:


注 –

尚未使用 Sun Java System Application Server 对这些配置进行测试。