{% include toc %}
安装git,详情可参考git安装教程
安装JDK 1.8,详情可参考JDK安装教程{:target=“_blank”}。
安装Maven 3.x,详情可参考Maven安装教程{:target=“_blank”}。
安装IntelliJ Idea IDE,详情可参考IntelliJ安装教程{:target=“_blank”}。
运行Stand-alone Service Center有以下两种方式:
以可执行文件的方式运行
注意:前端(frontend)在Linux环境下默认会绑定ipv6地址,导致浏览器报错,修复办法为:先修改conf/app.conf中的httpaddr为外部可达网卡ip,之后修改app/appList/apiList.js中ip : 'http://127.0.0.1'
为对应ip,最后重启ServiceCenter即可。 {: .notice--warning}
注意:Window和Linux版本均只支持64位系统。 {: .notice--warning}
以Docker的方式运行
docker pull servicecomb/service-center docker run -d -p 30100:30100 servicecomb/service-center:latest
注意事项: 服务注册中心运行后绑定的IP为:http://127.0.0.1:30100。
如使用Docker Toolbox,可通过 docker-machine ip
获取服务绑定IP地址。 {: .notice--warning}
Service Center是一个无状态的应用因此它很容易以集群的模式部署提供HA。
它依赖etcd存储微服务的信息,etcd既支持standalone模式运行也支持集群模式运行。
提示:我们强烈推荐etcd以集群模式运行,这样才能从整体上保证Service Center的HA能力;另外在这篇文档中我们可以了解到etcd需要部署至少三个节点才能够避免Majority Failure。
部署了standalone或集群etcd后,你可以按下面的步骤部署Service Center集群,我们以在两台VM上各部署一个Service Center实例为例:
Name | Address |
---|---|
VM1 | 10.12.0.1 |
VM2 | 10.12.0.2 |
我们假定你的etcd运行在http://10.12.0.4:2379 上:
在所有的VM上从ServiceComb官网下载最新版本的Service Center并解压:
tar -xvf service-center-X.X.X-linux-amd64.tar.gz
提示:请不要按stand-alone提示的方式执行start-service-center.sh,因为这样会启动内置的etcd。
编辑ServcieComb的配置文件,修改ip/port以及etcd地址:
vi conf/app.conf
修改下面的配置 :
httpaddr = 10.12.0.1 manager_cluster = "10.12.0.4:2379"
然后启动Service Center :
./service-center
vi conf/app.conf
修改下面的配置 :
httpaddr = 10.12.0.2 manager_cluster = "10.12.0.4:2379"
然后启动Service Center :
./service-center
提示:在manger_cluster
配置中你可以填写多个在etcd群集中的etcd实例地址:
manager_cluster= "10.12.0.4:2379,10.12.0.X:2379,10.12.0.X:2379"
验证你部署完毕的Service Center实例 :
curl http://10.12.0.1:30101/v4/default/registry/health
将会返回下面的内容 :
{ "instances": [ { "instanceId": "d6e9e976f9df11e7a72b286ed488ff9f", "serviceId": "d6e99f4cf9df11e7a72b286ed488ff9f", "endpoints": [ "rest://10.12.0.1:30100" ], "hostName": "service_center_10_12_0_1", "status": "UP", "healthCheck": { "mode": "push", "interval": 30, "times": 3 }, "timestamp": "1516012543", "modTimestamp": "1516012543" }, { "instanceId": "16d4cb35f9e011e7a58a286ed488ff9f", "serviceId": "d6e99f4cf9df11e7a72b286ed488ff9f", "endpoints": [ "rest://10.12.0.2:30100" ], "hostName": "service_center_10_12_0_2", "status": "UP", "healthCheck": { "mode": "push", "interval": 30, "times": 3 }, "timestamp": "1516012650", "modTimestamp": "1516012650" } ] }
我们可以看到Service Center能够自动发现所有正在集群中运行的实例,Java-Chassis SDK将使用这个特性至少找到一个Service Center实例。
在你的microservice.yaml中你可以填写一个或多个Service Center实例,如果Java-Chassis SDK发现配置的第一个地址(实例)失败,它将会自动使用下一个地址(实例):
servicecomb: service: registry: address: "http://10.12.0.1:30100,http://10.12.0.2:30100" autodiscovery: true
上面的例子里包含了我们已经配置好的两个Service Center实例。