glassfish(linux)+apache实现负载均衡
1.安装glassfish(Linux系统)
下载glassfish包:glassfish-installer-v2.1.1-b31g-linux-ml.jar
注意:安装glassfish前尤其是集群的时候,先vi /etc/hosts把其地址修改为如下:
127.0.0.1 localhost
192.168.1.215 datacomo3(主机名)
192.168.1.216 datacomo2(子节点)
2.安装glassfish(JDK为1.5)
(1)解压:% java -Xmx256m -jar filename.jar
(2)cd glassfish
(3)% chmod -R +x lib/ant/bin //添加执行权限(Linux,Unix才需要此步骤)
(4)因为要实现负载均衡,而且还要集群所以命令如下:
% lib/ant/bin/ant -f setup-cluster.xml
注意:若不安装集群,则指向如下命令
lib\ant\bin\ant -f setup.xml
(5)安装完后,cd domains
(6)启动glassfish
../bin/asadmin start-domain domain1
3.用上面的步骤分别在虚拟机192.168.1.215和192.168.1.216上装入glassfish
4.在两台机子上建立集群
(1)我们这里以192.168.1.215为代理服务器,进入代理服务器domain域,并启动glassfish
命令:../bin/asadmin start-domain domain1
注:这里都是采用默认配置的
建立节点代理:../bin/asadmin create-node-agent --host 192.168.1.215--port 4848 ng1
建立集群:../bin/asadmin create-cluster --host 192.168.1.215--port 4848 cluster1
在cluster1和ng1上 建立实例instance1:
../bin/asadmin create-instance --host 192.168.1.215--port 4848 --nodeagent ng1 --cluster cluster1 instance1
启动节点代理:./asadminstart-node-agent ng1
(2)在节点服务器192.168.1.216上进入domains域
命令:cd domains
注意:不要启动192.168.1.216的glassfish域
建立节点ng2: ../bin/asadmin create-node-agent --host 192.168.1.215 --port 4848 ng2
在cluster1和ng2上 建立实例instance2:
../bin/asadmin create-instance --host 192.168.1.215--port 4848 --nodeagent ng2 --cluster cluster1 instance2
启动节点代理:./asadminstart-node-agent ng2
(3)注意
<1>修改虚拟机主机名
/etc/sysconfig/network中的默认名
我的修改为如下(192.168.1.215):
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=liuhong
GATEWAY=192.168.1.1
<2>
(注意:若是linux上启动的时候,地注意虚拟机地址不能相同另外虚拟机设置主机名后还必须两个能互相访问)
这里我把他们的hosts设置如下 修改/etc/hosts
192.168.1.215修改如下:
127.0.0.1 localhost
192.168.1.215 liuhong(主机名)
192.168.1.216 liuping(主机名)
192.168.1.216修改如下:
127.0.0.1 localhost
192.168.1.216 liuping(主机名)
192.168.1.215 liuhong(主机名)
注意:修改完后,重启linux服务
<3>若修改后,还是不能启动。我建议如下:
进入192.168.1.215控制台。进入配置目录下,选择cluster1-config.xml中,选择java消息服务
进入消息服务后,选择JMS主机,新建一个das如:名字为das,主机为liuhong 密码默认其他全部默认
新建完后,选中Java消息服务,编辑类型改为remote,默认 JMS 主机:改为das,保存
重启服务,后,重启两个我服务节点ng1,ng2,并部署项目,就可以了,访问能够访问就可以了。
5.建立负载均衡(用Apache)
安装Apache可以看我前面文章安装的那样
并在配置文件中添加以下使其负载
注意以下几点:
(1)Listen 80
(2)ServerName datacomo2(Apache主机名):80
(3)LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so(ftp代理)
LoadModule proxy_http_module modules/mod_proxy_http.so(http代理)
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so(负载)
LoadModule speling_module modules/mod_speling.so
LoadModule rewrite_module modules/mod_rewrite.so
(4)添加如下参数
# Enable the rewriting engine
RewriteEngine On
# Enable Reverse Proxy functions
ProxyRequests Off
# Preserve the proxy host-name
ProxyPreserveHost On
# Set access permissions to anyone
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# Enable balance-manager (http://localhost:port/balancer-manager)
<Location /balancer-manager>
SetHandler balancer-manager
</Location>
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.216:38080/ route=t1
BalancerMember http://192.168.1.215:38080/ route=t2
## The below is the hot standby
#BalancerMember http://1.2.3.6:8009 status=+H
</Proxy>
<Location />
Order allow,deny
Allow from all
</Location>
#byrequests bytraffic bybusyness
ProxyPass / balancer://mycluster/ lbmethod=byrequests stickysession=JSESSIONID|jsessionid nofailover=Off
Redirect permanent / http://192.168.1.215/
(5)在本台住代理服务器端的glassfish中的cluster.xml中的虚拟服务中指定部署的项目包名:如:md
(6)在cluster.的两个实例中instance1中添加属性:并指定为:INSTANCE_ROUTE 值为:t1
instance2中添加属性:INSTANCE_ROUTE 值为t2
(7)