前面已经介绍了创建概要文件,这里把前面创建的管理节点和受管理节点结合起来做集群。
首先进入管理节点的bin目录启动管理节点,启动了才能进入管理控制台
./startManager.sh
进入其他受管理节点启动节点,也可以不启动,不启动也可以创建集群,因为创建概要的时候我们已经把受管理节点添加到管理节点中了,现在启动只是为了方便后续操作
./startNode.sh
然后进入管理控制台,然后服务器 > 集群 > WebSphere Application Server 集群 ,点击新建集群,新建集群的名字我们自己随便填,配置 HTTP 会话内存到内存复制的复选框我们这里先不勾选,选择的好处就是我们这里所有节点的会话是共享的,如果配置负载均衡的话,这几个节点的会话是无缝切换的。如果这几个节点都在同一台服务器上,使用这个选项就非常方便了,如果位于多个不同服务器就麻烦了。这里我们不勾选,因为我们下面使用会话管理的另一种方式。集群名字填好后,下面就是要添加集群的成员,所有需要的节点添加完集群就创建完成了。
集群创建完成后,我们就可以创建JDBC 提供程序了,还有数据源了,创建的时候注意作用域都要选择集群。
这里我们重点创建一个数据源,用来管理会话的,数据源名:sessions,JNDI 名称:jdbc/sessions,以上名字可以随便写,最好容易分辨。下一步选择我们之前创建的JDBC提供程序,websphere默认支持DB2和Oracle,我们使用Oracle,这里选择Oracle JDBC Driver,然后下一步填写数据库连接的URL,最后完成。
数据源配置好了,数据库的表结构是什么样的呢,参考IBM官方文档
对于 Oracle:
CREATE TABLE SESSIONS (
ID VARCHAR(128) NOT NULL ,
PROPID VARCHAR(128) NOT NULL ,
APPNAME VARCHAR(128) NOT NULL,
LISTENERCNT SMALLINT ,
LASTACCESS INTEGER,
CREATIONTIME INTEGER,
MAXINACTIVETIME INTEGER ,
USERNAME VARCHAR(256) ,
SMALL RAW(2000),
MEDIUM LONG RAW ,
LARGE RAW(1)
)
如果 Web 容器定制属性 UseOracleBLOB 设置为 true,那么:
CREATE TABLE SESSIONS (
ID VARCHAR(128) NOT NULL ,
PROPID VARCHAR(128) NOT NULL ,
APPNAME VARCHAR(128) NOT NULL,
LISTENERCNT SMALLINT ,
LASTACCESS INTEGER,
CREATIONTIME INTEGER,
MAXINACTIVETIME INTEGER ,
USERNAME VARCHAR(256) ,
SMALL RAW(2000),
MEDIUM BLOB,
LARGE RAW(1)
)
两者只是MEDIUM字段的类型不一样,我们这里采用默认第一种方式在数据创建好表。
创建完数据源之后需要重启nodeagent,不然连接数据库会有错误.应用安装完成之后同步一下节点,然后再启动应用.
然后设置服务器配置,服务器 > 服务器类型 > WebSphere Application Server > server_name > 会话管理 > 分布式环境设置,直接点击数据库,修改 数据源 JNDI 名称,这个名称看仔细了,是系统默认的,需要改成我们上面创建的jdbc/sessions,修改用户标识和密码,也就是SESSIONS表所在库的用户名和密码,其他配置不用修改,然后保存配置,数据库默认就会被选中有效。这里的server_name是我们的节点,把所有节点的服务器都这样配置好以后,重启所有server,然后就会生效了。
可以安装一个应用,通过一个节点的端口登录应用,再在另一个节点的端口打开应用,看看会话是否也有效,同时数据库SESSIONS表应该已经有数据了。
注意应用程序的管理也有一个会话管理 > 分布式环境设置,这里无需设置,设置后也没有作用。
集群创建好,接下来配置ihs,实现ihs的负载均衡。先配置 Web 服务器插件,使用命令行来创建,可参考
需要先配置一个 tool 自变量的响应文件,创建定义时,此参数是必需的。
我们就在WCT目录创建一个响应文件把
cd /opt/IBM/WebSphere/Toolbox/WCT
这个目录下有个pct_responsefile.txt,就是响应文件的模板,不过是Windows下的,我们需要改动的很多,不过可以参考,里面有很多注释。我们创建响应文件
vi responsefile.txt
文件内容如下,这里的概要文件指定的是受管理节点Custom01,指定管理节点是运行生成configurewebserver1.sh脚本报不是有效的节点错误,可以看下面后续的测试。
configType=local
enableAdminServerSupport=true
enableUserAndPass=true
ihsAdminUserID=admin
ihsAdminPassword=ihsadmin
ihsAdminPort=8008
ihsAdminCreateUserAndGroup=true
ihsAdminUnixUserGroup=was
ihsAdminUnixUserID=ihs
mapWebServerToApplications=true
wasExistingLocation=/opt/IBM/WebSphere/AppServer/
profileName=Custom01
webServerConfigFile1=/opt/IBM/HTTPServer/conf/httpd.conf
webServerDefinition=webserver1
webServerHostName=localhost
webServerOS=Linux
webServerInstallArch=64
webServerPortNumber=80
webServerSelected=ihs
创建完响应文件以后我们就可以进行配置了
./wctcmd.sh -tool pct \
-createDefinition \
-defLocPathname /opt/IBM/WebSphere/Plugins \
-defLocName WebServerPlugins \
-response /opt/IBM/WebSphere/Toolbox/WCT/responsefile.txt
如果创建失败,检查参数设置是否有问题,比如参数路径、系统是不是Linux、系统是不是64版本,然后修改响应参数,还有可能缺少一些32位类库支持,可尝试下载如下软件
yum install ld-linux.so.2 libgcc.i686
创建成功后会在/opt/IBM/WebSphere/Plugins/bin/目录下生成一个configurewebserver1.sh脚本,因为我们响应文件定义的服务器名字就是webserver1。
我们将这个脚本文件复制到管理节点bin目录下
cp /opt/IBM/WebSphere/Plugins/bin/configurewebserver1.sh /opt/IBM/WebSphere/AppServer/bin/
然后在AppServer/bin/下运行这个脚本
./configurewebserver1.sh
后续:
上面通过命令创建的configurewebserver1.sh,如果指定的概要文件是管理节点,运行会报节点不是有效的节点的问题,通过图形界面创建的,同样是管理节点,则不会报错,这样我们可以自己手动编辑configurewebserver1.sh脚本,比对两个生成的脚本,唯一的区别就是最后一行的参数,一个是unmanaged ihs-node,另一个是managed Dmgr01Node,可能是生成的Dmgr01Node名字与现有节点名字重复了,命令行工具的一个Bug吧。
#!/bin/sh
binDir=`dirname "$0"`
. "$binDir/setupCmdLine.sh"
COMMAND_INVOKED="$0"
PROFILE_NAME_PARAMETER=
WSADMIN_USERID_PARAMETER=
WSADMIN_PASSWORD_PARAMETER=
IHS_ADMIN_PASSWORD_PARAMETER=
printUsage()
{
echo ""
echo ""
echo "Usage: $COMMAND_INVOKED"
echo " [ -profileName profile_name ] "
echo " [ -user WAS_Admin_userID ] "
echo " [ -password WAS_Admin_password ] "
echo " [ -ihsAdminPassword IHS_Admin_password ]"
echo " [ -help | -? ]"
echo " "
echo "Where:"
echo " \"profileName\" is the name of the profile in which "
echo " web server should be created"
echo " \"user\" is the WebSphere Administration userID"
echo " \"password\" is the WebSphere Administration password"
echo " \"ihsAdminPassword\" is the password to access the IHS Adminstration server"
echo " "
echo "Example: "
echo " $COMMAND_INVOKED -profileName AppSrv01 -user admin -password admin1"
echo " "
echo " "
exit 0
}
printError()
{
echo "ERROR: $1"
printUsage
}
while [ $# -gt 0 ]; do
case $1 in
-help|-?) printUsage
exit 0
;;
-profileName) shift
echo "Using the profile $1"
PROFILE_NAME_PARAMETER="-profileName $1"
;;
-user) shift
echo "Using WAS admin userID $1"
WSADMIN_USERID_PARAMETER="-user $1"
;;
-password) shift
WSADMIN_PASSWORD_PARAMETER="-password $1"
;;
-ihsAdminPassword) shift
IHS_ADMIN_PASSWORD_PARAMETER="$1"
;;
-*) echo "Unsupported option"
echo "$1"
printUsage
exit 0
;;
esac
shift
done
"$binDir/wsadmin.sh" $PROFILE_NAME_PARAMETER $WSADMIN_USERID_PARAMETER $WSADMIN_PASSWORD_PARAMETER -f $WAS_HOME/bin/configureWebserverDefinition.jacl webserver1 IHS '/opt/IBM/HTTPServer' '/opt/IBM/HTTPServer/conf/httpd.conf' 80 MAP_ALL '/opt/IBM/WebSphere/Plugins' unmanaged ihs-node localhost linux 8008 admin ihsadmin
如果有其他改动,比对上面脚本中的参数修改就可以了。创建好之后添加运行权限
chmod +x configurewebserver1.sh
然后在AppServer/bin/目录下运行就好了,运行之后会单独创建一个ihs-node节点,可以在拓扑图中看到,
要想在管理控制台可以启动和停止ihs,需要启动ihs的管理服务
/opt/IBM/HTTPServer/bin/adminctl start
注意编辑configurewebserver1.sh为运行生成脚本wctcmd.sh之后,编辑已存在的文件,如果不运行上面wctcmd.sh直接写一个configurewebserver1.sh执行也正常,但是启动ihs控制台adminctl start会报错误
Syntax error on line 7 of /opt/IBM/HTTPServer/conf/admin.conf:Port must be specified
因为不运行生成脚本,一些环境变量就没有设置,管理端口等变量就找不到正确的值。
注:
如果你是用的图形界面的Web插件管理工具,点击菜单没反应,一般是Linux服务器会出现这种情况,由于缺少软件包导致的,或者64位操作系统,缺少32系统包的支持,可以在终端下运行wct.sh看看有什么错误,或者查看一下错误日志
cat /root/.ibm/WebSphere/workspaces/WCT85/.metadata/.log
再或者直接安装一下包试试
yum install libgcc libgcc.i686 ld-linux.so.2 gtk2.i686 PackageKit-gtk3-module PackageKit-gtk3-module.i686
再提供两条命令
#删除服务器定义
./wctcmd.sh -tool pct -deleteDefinition webserver1 -defLocName WebServerPlugins
#删除插件位置定义
./wctcmd.sh -tool pct -removeDefinitionLocation -defLocName WebServerPlugins