websphere集群的创建

前面已经介绍了创建概要文件,这里把前面创建的管理节点和受管理节点结合起来做集群。

首先进入管理节点的bin目录启动管理节点,启动了才能进入管理控制台

./startManager.sh

进入其他受管理节点启动节点,也可以不启动,不启动也可以创建集群,因为创建概要的时候我们已经把受管理节点添加到管理节点中了,现在启动只是为了方便后续操作

./startNode.sh

然后进入管理控制台,然后服务器 > 集群 > WebSphere Application Server 集群 ,点击新建集群,新建集群的名字我们自己随便填,配置 HTTP 会话内存到内存复制的复选框我们这里先不勾选,选择的好处就是我们这里所有节点的会话是共享的,如果配置负载均衡的话,这几个节点的会话是无缝切换的。如果这几个节点都在同一台服务器上,使用这个选项就非常方便了,如果位于多个不同服务器就麻烦了。这里我们不勾选,因为我们下面使用会话管理的另一种方式。集群名字填好后,下面就是要添加集群的成员,所有需要的节点添加完集群就创建完成了。

集群创建完成后,我们就可以创建JDBC 提供程序了,还有数据源了,创建的时候注意作用域都要选择集群。

这里我们重点创建一个数据源,用来管理会话的,数据源名:sessions,JNDI 名称:jdbc/sessions,以上名字可以随便写,最好容易分辨。下一步选择我们之前创建的JDBC提供程序,websphere默认支持DB2和Oracle,我们使用Oracle,这里选择Oracle JDBC Driver,然后下一步填写数据库连接的URL,最后完成。

数据源配置好了,数据库的表结构是什么样的呢,参考IBM官方文档

https://www.ibm.com/support/knowledgecenter/zh/SSAW57_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/uprs_rpersistence.html

https://www.ibm.com/support/knowledgecenter/zh/SSAW57_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/tprs_cnfp.html

https://www.ibm.com/support/knowledgecenter/zh/SSAW57_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/tprs_table_creation.html

对于 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 Serverserver_name > 会话管理 分布式环境设置,直接点击数据库,修改 数据源 JNDI 名称,这个名称看仔细了,是系统默认的,需要改成我们上面创建的jdbc/sessions,修改用户标识密码,也就是SESSIONS表所在库的用户名和密码,其他配置不用修改,然后保存配置,数据库默认就会被选中有效。这里的server_name是我们的节点,把所有节点的服务器都这样配置好以后,重启所有server,然后就会生效了。

可以安装一个应用,通过一个节点的端口登录应用,再在另一个节点的端口打开应用,看看会话是否也有效,同时数据库SESSIONS表应该已经有数据了。

注意应用程序的管理也有一个会话管理 分布式环境设置,这里无需设置,设置后也没有作用。

集群创建好,接下来配置ihs,实现ihs的负载均衡。先配置 Web 服务器插件,使用命令行来创建,可参考

https://www.ibm.com/support/knowledgecenter/zh/SSEQTP_9.0.5/com.ibm.websphere.base.doc/ae/tins_pctcl_using.html

需要先配置一个 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

 

转载于:https://my.oschina.net/googlewell/blog/3081101

你可能感兴趣的:(websphere集群的创建)