centos7 zookeeper集群和activemq集群部署后的web控制台查看实现

在之前的文章中,我们成功的搭建部署了zookeeper集群,和基于zookeeper集群部署的activemq集群。虽然能正常提供服务,但是却不方便查看状态和数据,不方便运维,也不方便可开发调试等。下面就记录一下,如果部署zookeeper集群和activemq集群的web可视化控制台界面。方便开发调试和运维。

共分为两部分:1.  zookeeper集群的管理控制台 dubbo-admin

  2. activemq 自身的web console 。(有干活,网上没人讲过的)


一:zookeeper管理控制台dubbo-admin

dubbo-admin是dubbo的管理控制台,可以查看通过zookeeper提供的各种服务者和消费者,服务状态等。下面进行部署:

1. 克隆dubbo-admin的项目到本地

$ git clone https://github.com/apache/incubator-dubbo-ops

2. 进入项目,使用maven构建项目, 不一定需要完全构建成功,里面有三个项目,只要dubbo-admin项目构建成功即可。

$ cd incubator-dubbo-ops
## 这里需要maven环境,在settings中需要加上阿里云的公共maven库。(这个不知道的,请自行百度)
$ mvn package    


3. 讲打包好的dubbo-admin-xxx.war文件解压到tomcat的webapss下,使用tomcat运行

## 打包成功的war包的路径为:incubator-dubbo-ops/dubbo-admin/target/dubbo-admin-xxxx.war
## 解压到tomcat目录,{tomcat-dir}来表示你tomcat的根目录。
## 这里注意,我解压到了dubbo-admin这个文件夹内,在网上多是让人解压成 ROOT(原ROOT文件夹删除),这样直接访问 ip:port 就能进入控制台,但是有一个问题
## 如果作为ROOT的话,不方便使用nginx进行反向代理,那么如果在生产环境或别的只有统一个出口的环境下,就不方便访问。所以这里解压到dubbo-admin下。

$ unzip dubbo-admin/target/dubbo-admin-2.0.0.war –d {tomcat-dir}/webapps/dubbo-admin


4. 修改配置,启动tomcat
$ vim {tomcat-dir}/webapps/dubbo-admin/WEB-INF/dubbo.properties

## 集群方式则使用以下类似配置,这里假设zookeeper的服务地址如下
dubbo.registry.address=zookeeper://172.18.42.182:2181?backup=172.18.42.183:2181,172.18.42.184:2181
## 单机则使用以下类似配置
dubbo.registry.address=zookeeper://172.18.42.182:2181

dubbo.admin.root.password=root    # 可自定义root密码
dubbo.admin.guest.password=guest    # 可自定义guest密码


## 修改完配置后,启动tomcat
$ {tomcat-dir}/bin/startup.sh



5.  通过nginx代理dubbo-admin。(这一步,并不是必须的,但是对于企业中使用,常有需要)

只需要简单增加如下配置到nginx中即可,假设dubbo-admin部署的tomcat地址为 172.18.42.188:8080

location /dubbo-admin {
        proxy_pass http://172.18.42.188:8080/dubbo-admin
}


6. 假设dubbo-admin部署的tomcat地址为 172.18.42.188:8080。访问地址: http://172.18.42.188:8080/dubbo-admin,用户密码为: root / <youpasswd> 上面自定义的密码   

如果使用了nginx,当然就是使用nginx的地址了。  出现如下画面则部署成功







二: activemq集群 Web控制台部署。

activemq本身项目就是自带web控制台的,随服务启动而启动,并不需要安装别的东西。 默认的监听 8161 端口。启动activemq 服务后,直接访问 IP:8161 即可进入界面。在界面上点击进如管理控制台,或直接访问默认控制台地址为: http://<your-ip>:8161/admin 。 默认用户密码为: admin / admin

是的,就这么简单就可以访问了。但是为什么要拿出来说呢。因为这样不能满足我们的需求。

首先,我们的activemq集群式基于zookeeper的搭建的。正常情况下,我们启动了三个activemq,但是只有一个对外提供服务,其他只是同步数据,并没有启动,只有当master挂掉后,作为salve的两个activemq服务再选出一个master启动服务,然后对外提供服务。而每个activemq服务只有自身启动服务,才会启动web控制台。也就是说,如果master挂掉,web控制台的地址就发生了改变,不管是单机多实例,还是多机,总之访问的地址会发生变化。 

那么怎么样实现,不管activemq是否有挂,web控制台的地址是否变化。我都可以访问同一个地址进入到控制台界面呢。当然有啦,那就是nginx了。使用nginx在前面做一个反向代理,在代理中使用负载均衡,将三个实例的地址都写进去。那么访问时,就会由nginx自动帮我们跳转到能正常访问的地址。这样就不用管activemq是否挂掉了。


好的,那么到这里。我么确定了使用nginx作为反向代理。那么要用nginx做反向代理,使用nginx的配置如下:

## http中添加负载均衡配置
upstream activemq_webui {
        server 172.18.42.182:8161;
        server 172.18.42.183:8161;
        server 172.18.42.184:8161;
}

## server 中加入下面内容
location /admin {
  proxy_pass http://activemq_webui/admin;
}
 
 

这样,就可以通过访问 http://<nginx-ip>:<nginx-port>/admin  来访问activemq的web控制台界面,但是有一个问题。如果你的网络中,有两个activemq集群需要查看,但是要用同一个nginx进行代理。那么两个集群的默认访问地址的后面路径都是admin。那么久没办法再nginx上,进行区分,不方便通过路径来进行不同的跳转。所以,为了能在nginx上灵活的实现对多个activemq集群的web控制台的访问。

我们需要修改 activemq的web控制台的访问路径(重点,网上没人讲过的)。还可以修改访问的用户名密码,修改方式如下:

## 修改activemq 访问路径
vim {activemq-dir}/conf/jetty.xml
-------------------------------------------------------------------------------------------------------------------------
<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="user,admin" />     ## 角色
        <!-- set authenticate=false to disable login -->
        <property name="authenticate" value="true" />    ## 在高版本中,默认是开启验证的
    </bean>
    <bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="admin" />         ## 角色
         <!-- set authenticate=false to disable login -->
        <property name="authenticate" value="true" />    ## 在高版本中,默认是开启验证的
    </bean>
    <bean id="securityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping">
        <property name="constraint" ref="securityConstraint" />
        <property name="pathSpec" value="/api/*,/admin-zs/*,*.jsp" />    ## 这里是设置访问权限,将 admin 改为你别的路径名。如: admin-zs  
    </bean>
    <bean id="adminSecurityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping">
        <property name="constraint" ref="adminSecurityConstraint" />
        <property name="pathSpec" value="*.action" />
    </bean>

## 配置访问路径
<bean class="org.eclipse.jetty.webapp.WebAppContext">
            ## 默认为admin,改为 admin-zs ,需要跟上面访问权限设置的路径保持一致
       <property name="contextPath" value="/admin-zs" />   
       <property name="resourceBase" value="${activemq.home}/webapps/admin" />
       <property name="logUrlOnStart" value="true" />
--------------------------------------------------------------------------------------------------------------------------

## 修改访问的 用户名 密码
vim {activemq-dir}/conf/jetty-realm.properties
----------------------------
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
# 格式为 : 用户名:密码,角色
# 默认有两个角色,admin,user,权限配置在上一步修改的配置文件中,进行设定。这里我不需要user用户,直接注释掉。
admin: admin123, admin
#user: user, user
----------------------------


OK,保存配置,重启activemq。访问 http:// <ip>:8161/admin-zs   输入修改的用户名密码: admin / admin123 就可以进入控制台了,一切OK。然后就可以类似的添加到nginx中,通过nginx反向代理来实现固定地址访问activemq集群的web控制界面了。如图:




OK。到此。两个web控制台都完成了部署。有什么问题,欢迎留言,看到必答

猜你喜欢

转载自blog.csdn.net/weixin_41004350/article/details/79916796