zookeeper+dubbo微服务架构
创建provider资源
创建dubbo provider生产者Dockerfile
root@deploy:/dockerfile/project/dubbo# cat Dockerfile
#Dubbo provider
FROM harbor.cncf.net/web/jdk:1.8.191
RUN useradd nginx
RUN apt install file netcat-traditional -y
RUN mkdir -p /usr/local/dubbo/provider
ADD dubbo-demo-provider-2.1.5/ /usr/local/dubbo/provider
ADD run_java.sh /usr/local/dubbo/provider/bin
RUN chown nginx.nginx /usr/local/dubbo -R
RUN chmod a+x /usr/local/dubbo/provider/bin/*.sh
CMD ["/usr/local/dubbo/provider/bin/run_java.sh"]
配置provider生产者配置文件,填写zookeeper pod的dns地址。
Zookeeper使用deployment控制器部署则地址为pod名称.名称空间.svc.集群名称
root@deploy:/dockerfile/project/dubbo# cat dubbo-demo-provider-2.1.5/conf/dubbo.properties
##
# Copyright 1999-2011 Alibaba Group.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##
dubbo.container=log4j,spring
dubbo.application.name=demo-provider
dubbo.application.owner=
#dubbo.registry.address=multicast://224.5.6.7:1234
dubbo.registry.address=zookeeper://zookeeper1.test.svc.cluster.local:2181 | zookeeper://zookeeper2.test.svc.cluster.local:2181 | zookeeper://zookeeper3.test.svc.cluster.local:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.monitor.protocol=registry
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.log4j.file=logs/dubbo-demo-provider.log
dubbo.log4j.level=WARN
创建dubbo-provider容器运行脚本
root@deploy:/dockerfile/project/dubbo# cat run_java.sh
#!/bin/bash
su - nginx -c "/usr/local/dubbo/provider/bin/start.sh"
tail -f /usr/local/dubbo/provider/logs/dubbo-demo-provider.log
创建镜像构建脚本
root@deploy:/dockerfile/project/dubbo# cat build-command.sh
#!/bin/bash
TAG=$1
docker build -t harbor.cncf.net/project/dubbo-demo-provider:${TAG} .
docker push harbor.cncf.net/project/dubbo-demo-provider:${TAG}
创建生产者k8s资源清单文件
root@deploy:/dockerfile/project/dubbo# cat provider.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: dubbo-provider
name: dubbo-provider-deployment
namespace: test
spec:
replicas: 1
selector:
matchLabels:
app: dubbo-provider
template:
metadata:
labels:
app: dubbo-provider
spec:
containers:
- name: dubbo-provider-container
image: harbor.cncf.net/project/dubbo-demo-provider:1.0.3
imagePullPolicy: Always
ports:
- containerPort: 20880
protocol: TCP
name: http
---
kind: Service
apiVersion: v1
metadata:
labels:
app: dubbo-provider
name: dubbo-provider-spec
namespace: test
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 20880
#nodePort: 30001
selector:
app: dubbo-provider
查看运行状态
查看运行日志
root@deploy:/dockerfile/project/dubbo# kubectl logs -f dubbo-provider-deployment-579df8dd57-m8znm
查看在zookeeper注册
创建consumer资源
创建consumer dockerfile镜像
root@deploy:/dockerfile/project/dubbo/consumer# cat Dockerfile
FROM harbor.cncf.net/web/jdk:1.8.191
RUN useradd nginx
RUN apt install file -y
RUN mkdir -p /usr/local/dubbo/consumer
ADD dubbo-demo-consumer-2.1.5 /usr/local/dubbo/consumer
ADD run_java.sh /usr/local/dubbo/consumer/bin
RUN chown nginx.nginx /usr/local/dubbo -R
RUN chmod a+x /usr/local/dubbo/consumer/bin/*.sh
CMD ["/usr/local/dubbo/consumer/bin/run_java.sh"]
创建镜像构建脚本
root@deploy:/dockerfile/project/dubbo/consumer# cat build-command.sh
#!/bin/bash
TAG=$1
docker build -t harbor.cncf.net/project/dubbo-demo-consumer:${TAG} .
docker push harbor.cncf.net/project/dubbo-demo-consumer:${TAG}
配置dubbo consumer配置文件
root@deploy:/dockerfile/project/dubbo/consumer# cat dubbo-demo-consumer-2.1.5/conf/dubbo.properties
##
# Copyright 1999-2011 Alibaba Group.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##
dubbo.container=log4j,spring
dubbo.application.name=demo-consumer
dubbo.application.owner=
#dubbo.registry.address=multicast://224.5.6.7:1234
dubbo.registry.address=zookeeper://zookeeper1.test.svc.cluster.local:2181 | zookeeper://zookeeper2.test.svc.cluster.local:2181 | zookeeper://zookeeper3.test.svc.cluster.local:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.monitor.protocol=registry
dubbo.log4j.file=logs/dubbo-demo-consumer.log
dubbo.log4j.level=WARN
创建dubbo consumer启动脚本
root@deploy:/dockerfile/project/dubbo/consumer# cat run_java.sh
#!/bin/bash
su - nginx -c "/usr/local/dubbo/consumer/bin/start.sh"
tail -f /usr/local/dubbo/consumer/logs/dubbo-demo-consumer.log
创建consumer k8s yaml资源清单
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: dubbo-consumer
name: dubbo-consumer-deployment
namespace: test
spec:
replicas: 1
selector:
matchLabels:
app: dubbo-consumer
template:
metadata:
labels:
app: dubbo-consumer
spec:
containers:
- name: dubbo-consumer-container
image: harbor.cncf.net/project/dubbo-demo-consumer:1.0
imagePullPolicy: Always
ports:
- containerPort: 80
protocol: TCP
name: http
---
kind: Service
apiVersion: v1
metadata:
labels:
app: dubbo-consumer
name: dubbo-consumer-server
namespace: test
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
#nodePort: 30001
selector:
app: dubbo-consumer
在provider生产者查看日志消息验证,consumer消费者调用成功
查看dubbo consumer成功在zookeeper注册
扩充consumer和provider节点
root@deploy:/dockerfile/project/dubbo/consumer# kubectl scale deployment dubbo-consumer-deployment --replicas 3
deployment.apps/dubbo-consumer-deployment scaled
root@deploy:/dockerfile/project/dubbo/consumer# kubectl scale deployment dubbo-provider-deployment --replicas 3
deployment.apps/dubbo-provider-deployment scaled
root@deploy:/dockerfile/project/dubbo/consumer# kubectl exec -it dubbo-provider-deployment-579df8dd57-rrhcr -- bash
查看provider日志消息,查看多个consumer调用provider
部署dubbo admin控制台
创建dubbo-admin Dockerfile
root@deploy:/dockerfile/project/dubbo/dubbo-admin# cat Dockerfile
FROM harbor.cncf.net/web/tomcat:8.5.79
RUN apt install unzip -y
ADD server.xml /usr/local/tomcat/conf/server.xml
ADD logging.properties /usr/local/tomcat/conf/logging.properties
ADD catalina.sh /usr/local/tomcat/bin/catalina.sh
ADD run_tomcat.sh /usr/local/tomcat/bin/run_tomcat.sh
ADD dubboadmin /usr/local/tomcat/webapps/dubboadmin
EXPOSE 8080 8443
CMD ["/usr/local/tomcat/bin/run_tomcat.sh"]
创建镜像构建脚本
root@deploy:/dockerfile/project/dubbo/dubbo-admin# cat build-command.sh
#!/bin/bash
TAG=$1
docker build -t harbor.cncf.net/project/dubboadmin:${TAG} .
docker push harbor.cncf.net/project/dubboadmin:${TAG}
配置catalina.sh,修改tocmat java启动参数
root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim catalina.sh
JAVA_OPTS="-server -Xms512m -Xmx512m -Xss512k -Xmn1g -XX:CMSInitiatingOccupancyFraction=65 -XX:+Us
eFastAccessorMethods -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuri
ngThreshold=10 -XX:NewSize=2048M -XX:MaxNewSize=2048M -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermS
ize=512m -XX:CMSFullGCsBeforeCompaction=5 -XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC
-XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSize
InBytes=128m -XX:+UseFastAccessorMethods"
修改tomcat的日志路径
root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim logging.properties
3manager.org.apache.juli.AsyncFileHandler.directory = /usr/local/tomcat/logs
修改tomcat服务配置文件,设置项目路径和名称
root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim server.xml
修改tomcat 服务启动脚本
root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim run_tomcat.sh
#!/bin/bash
/usr/local/tomcat/bin/catalina.sh start
tail -f /usr/local/tomcat/logs/catalina.out
修改dubbo-admin配置文件
修改zookeeper pod服务地址,root和guest用户密码
root@deploy:/dockerfile/project/dubbo/dubbo-admin# unzip dubboadmin.war
root@deploy:/dockerfile/project/dubbo/dubbo-admin# vim dubboadmin/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://zookeeper1.test.svc.cluster.local:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
创建dubbo-admin k8s yaml资源文件
root@deploy:/dockerfile/project/dubbo/dubbo-admin# cat dubboadmin.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: dubboadmin
name: dubboadmin-deployment
namespace: test
spec:
replicas: 1
selector:
matchLabels:
app: dubboadmin
template:
metadata:
labels:
app: dubboadmin
spec:
containers:
- name: dubboadmin-container
image: harbor.cncf.net/project/dubboadmin:1.0.5
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
name: http
---
kind: Service
apiVersion: v1
metadata:
labels:
app: dubboadmin
name: dubboadmin-service
namespace: test
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
nodePort: 30080
selector:
app: dubboadmin
验证pod
验证dubboadmin svc:
浏览器访问:k8s节点ip:30080
用户名密码输入:root/root
进入首页
查看provider
标签:dubbo,local,Zookeeper,project,案例,注册,provider,root,consumer From: https://www.cnblogs.com/punchlinux/p/16603424.html