使用 NIM 通过 HTTP 协议安装 AIX 更新和新软件包
网络 Installation Manager (NIM) 支持通过安全超文本传输协议 (HTTP) 协议安装 AIX® 更新,以符合限制使用网络文件服务器 (NFS) 的新兴数据中心策略。
AIX BOS 安装仍需要使用 NFS V 3 协议或更安全的 NFS V 4 协议。 除了安装文件集之外,还支持通过 HTTP 协议执行诸如脚本执行和复制 file_res 目录之类的 NIM 定制进程。
- 所有通信都通过单个 HTTP 端口进行。 因此,通过防火墙进行的授权更容易管理。
- AIX 安装步骤是从客户机的端 (即安装的目标系统) 开始执行的。 因此,运行命令时不需要远程访问。
- NIM 或当前使用 NFS 的客户机/服务器模型的任何其他产品可以轻松地使用 HTTP。
- 能够扩展最终产品,以支持其他协议。
NIM HTTP 服务
AIX 7.2.0 提供了一个新的服务处理程序,用于提供对 NIM 资源的 HTTP 访问权。 nimhttp 服务在 /etc/services 和 nimhttp 守护程序中定义,它们侦听通过 4901 端口发出的请求。 当 nimhttp 服务处于活动状态时, NIM 客户机尝试访问 /etc/services 文件并请求定制 nimhttp 服务中定义的脚本。 如果 HTTP 访问失败或访问被拒绝,那么将发生对 NFS 客户机的访问故障转移尝试。
在 NIM 服务器上启用 nimhttp 服务
nimhttp 服务,请在 NIM 服务器上运行以下命令:# nimconfig -hcrypto 或 ssl 设置。nimhttp 服务时,该服务会尝试读取位于 root 用户的缺省主目录中的 httpd.conf 配置文件。 如果您是首次使用 nimhttp 服务,并且在未创建配置文件的情况下启动 nimhttp 服务,那么将创建配置文件并使用 nimhttp 服务的缺省值进行填充。# cat /httpd.conf
#
#
#http service defines
#
#
service.name=nimhttp
# Designates the service name used when discovering the listening port for requests (i.e., nimhttp)
#
service.log=/var/adm/ras/nimhttp.log
#Log of access attempts and equivalent responses. Also useful for debug purposes.
#
# service.proxy_port=
#Designates the service portnumber used when configured as a proxy.
#
#---------------------------------------------------------------
# http configuration
#---------------------------------------------------------------
#
document_root=/export/nim/
#Designates the directory to serve files from.
#
enable_directory_listing=yes
#Allow requests for listing served files/directories under the document root.
#
enable_proxy=no
#Enable the webservice to act as a proxy server.
#
ssl.cert_authority=/ssl_nimsh/certs/root.pem
#Designates the file location of the certificate authority used for digital certificate signing.
#
ssl.pemfile=/ssl_nimsh/certs/server.pem
#Designates the file location of the PEM format file which contains both a certificate and private key.
#
httpd.conf 文件的属性
httpd.conf 文件具有以下属性和设置:
document_root 路径
可以使用 HTTP 协议来访问未定义为资源位置的文件。 这些文件必须位于 document_root的路径设置中。 当 nimhttp 服务可操作时,无法修改定义的 document_root 路径位置。
document_root 路径可能包含许多目录。 设置 enable_directory_listing 选项时,客户机请求可以通过 document_root 路径。 如果 enable_directory_listing 选项设置为值 no,那么安装期间使用的所有文件都必须位于 document_root 路径的当前工作目录中。
安全套接字层 (SSL) 设置
nimhttp 服务使用基本协议握手作为缺省认证。 必须为认证中心 (CA) 和服务器的根证书文件提供有效路径,才能启用更安全的 "摘要认证" 方法。
nimhttp 服务中使用的认证中心和根隐私增强邮件 (PEM) 文件。 要创建 nimhttp 服务所使用的 ssl.cert_authority 和 ssl.pemfiles 文件,请在 NIM 主控机上运行以下命令:# nimconfig –cssl.cert_authority 和 ssl.pemfiles 文件。nimhttp 服务之前检查是否已针对 SSL 权限配置 NIM 主控机,请在 NIM 主控机上运行以下命令:# lsnim –a ssl_support代理设置
NIM 客户机命令依赖于 nimhttp 服务,因为 NIM 服务器充当托管 NIM 资源的文件服务器。
或者,您可以使用代理选项,通过使用 nimhttp 服务器代码来处理 HTTP 请求。 使用值 enable_proxy=yes启用代理选项时,通过 nimhttp 端口发出的任何服务请求都将转发到 service.proxy_port 端口列表中列出的服务端口。
HTTP 认证由目标服务处理,而不是由 nimhttp 服务处理。 在 NIM 客户机中本地标识了目标服务端口。
在 NIM 服务器上禁用 nimhttp 服务
nimhttp 服务,请在 NIM 服务器上运行以下命令:# nimconfig -H支持 HTTP 访问的 NIM 资源
nimhttp 服务访问 http 文件:file_resfix_bundleinstallp_bundlelpp_sourcescript
示例
- 要安装 bos.sysmgt.nim.master 文件集并定义基本资源,请运行以下命令:
# nim_master_setup –a device=/dev/cd0 - 要对 NIM 环境启用安全套接字层 (SSL) 管理,请运行以下命令:
# nimconfig –c - 要启用具有 SSL 支持的
nimhttp服务,请运行以下命令:# nimconfig -h - 要检查服务日志文件中是否存在任何已发生的错误,请运行以下命令:
# cat /var/adm/ras/nimhttp.log - 如果您正在使用推送操作,那么以下命令支持
nimhttp服务:nim –o cust–a file_res= <obj_name> <client_obj_name> nim –o cust–a script= <obj_name> <client_obj_name> nim –o cust –a lpp_source=<obj_name> -a filesets=<fileset names to install> <client_obj_name> nim –o cust –a lpp_source=<obj_name> -a installp_bundle=<obj_name> <client_obj_name> nim –o cust –a lpp_source=<obj_name> -a fixes=update_all <client_obj_name> - 如果正在使用来自 NIM 客户机的拉取操作,那么以下命令支持
nimhttp服务:nimclient –o cust –a file_res=<obj_name> nimclient –o cust –a script=<obj_name> nimclient –o cust –a lpp_source=<obj_name> ---a filesets=<fileset names to install> nimclient –o cust –a lpp_source=<obj_name> ---a installp_bundle=<obj_name> nimclient –o cust –a lpp_source=<obj_name> ---a fixes=update_all
用于 nimhttp 服务的调试会话
nimsh 协议进行,以运行应用程序。 但是,客户机请求通过 HTTP 协议 (而不是通常的 NFS 导出或安装过程) 发送文件资源。 以下步骤显示了示例调试会话。- 要从 NIM 主控机启动
nimhttp服务,请运行以下命令:nimconfig -h - 要使 NIM 主控机的当前窗口保持活动状态以查看来自客户机的 HTTP 请求,请运行以下命令。
tail -f /var/adm/ras/nimhttp.log - 在单独的窗口中,在客户机或主系统上,从安装了 AIX 7.2 的系统运行所需的
cust操作。 nimhttp服务的日志活动显示在终端窗口上。
确认使用 HTTP 而不是 NFS
要确保使用 HTTP 协议而不是使用 NFS 协议来执行 NIM cust 操作,请确保 NFS 无法通过从 /etc/exports 文件中除去条目来访问 NIM 资源。 有关指示信息,请参阅 nimhttp 服务的调试会话 部分中的步骤 1 - 4 。 在 NIM cust 操作开始下载文件集之后,运行 exportfs -uav 命令以确保 NIM 主控机不会从客户机故障转移到 NFS 安装。
nimhttp 服务请求,那么将显示类似于以下示例的日志条目:------
Mon Oct 26 14:45:37 2015
nim_http: data string passed to get_http_request: "GET /client.defs HTTP/1.1
Connection: close
"
Mon Oct 26 14:45:37 2015 Request Type is GET
Mon Oct 26 14:45:37 2015 Sending Response Header "200 OK"
Mon Oct 26 14:45:37 2015 Sending file over socket 5. Expected length is 2989
Mon Oct 26 14:45:37 2015 Total length sent is 2989
Mon Oct 26 14:45:37 2015 handle_httpGET: Entering cleanup statement
验证 NIM 环境配置
可以使用以下步骤来确认是否正确配置了 NIM 环境以处理 nimhttp 服务。
- 要验证 NIM 主控机是否正在侦听特定主机地址上的连接请求,请在 NIM 主控机上运行以下命令:
# cat /etc/niminfo # nimconfig -h (if necessary) # netstat -a | grep nimhttp # netstat -i # cat /httpd.conf # cat /var/adm/ras/nimhttp.log在客户机上,运行以下命令:# cd /tmp # nimhttp -f /export/nim -o dest=/tmp -v要确定客户机请求是否已到达 NIM 主控机,请在 NIM 主控机上运行以下命令:# cat /var/adm/ras/nimhttp.log - 如果步骤 1 中的命令导致意外输出,那么客户机可能正在从 NIM 主控机未响应的主机 IP 请求
nimhttp服务。 您可以检查正在运行主系统的主机名和 IP 地址的列表。 您可以提供主机名作为先前客户机请求期间提供的nimhttp命令的自变量。 您可以运行nimhttp -?命令以了解nimhttp命令的标志语法。