apollo部署

apollo是携程开源的一个配置中心,功能强大,但是部署起来比较复杂, 所以这里记录一下。

先简单介绍一下各个组件

  • Config Service 提供配置的读取、推送等功能,服务对象是Apollo客户端

  • Admin Service 提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

  • 通过Apollo的发布界面可以多环境、集群管理配置

  • Portal是web服务,可以在web上修改配置,发布等功能

  • Config Service 和 Admin Service 都是多实例、无状态部署,所以需要将自己注册到

  • Eureka 中并保持心跳,在 Eureka 之上架了一层 Meta Server 用于封装 Eureka 的服务发现接口。Apollo提供了MetaServiceProvider SPI,用户可以注入自己的MetaServiceProvider来自定义Meta Server定位逻辑

  • Client 通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port 访问服务,同时在 Client 侧会做 load balance、错误重试

为了简化部署,把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中。

所以实际上我们需要部署3个服务,其中config service和admin service为了保证高可用,需要部署在多台机器上。portal可以部署单台就行。另外apollo官方还建议一个环境部署一套,这里为了简单,我们只部署一套了,通过不同的项目来区分环境。(初创公司没必要搞这么复杂)

1.环境准备见如下链接

Apollo

这里我没改任何和网络有关的设置,因为都是阿里云的内网,也是在阿里云的机器上,只做了有关mysql的一些修改

把config service的库里的注册eureka的url修改成了我部署config service的ip,apollo官方建议别用固定ip的方式,为了后续扩容方便,强烈建议使用slb,这里考虑我们业务都是初创阶段,几年内估计都不会扩容。

UPDATE ApolloConfigDB.ServerConfig SET Value='http://x.x.x.110:8090/eureka/,http://x.x.x.237:8090/eureka/' WHERE Id=1

这个里面ip+端口,修改成你的config service的ip和端口

另一个就是修改环境,因为我们只部署一套pro环境的,所以这里我修改成了一个pro

UPDATE ApolloPortalDB.ServerConfig SET Value='pro' WHERE Id=1

2.先启动config service

修改/data/apollo/apollo-configservice/config里的数据库配置

# DataSource
spring.datasource.url = jdbc:mysql://x.x.x.110:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root

改成你前面倒入的ApolloConfigDB所在的mysql url

修改/data/apollo/apollo-configservice/scripts/startup.sh

export JAVA_OPTS="-Xms3072m -Xmx3072m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=2048m -XX:MaxNewSize=2048m -XX:SurvivorRatio=8"

这里我修改了jvm的参数,修改端口为:SERVER_PORT=${SERVER_PORT:=8090}

然后启动

sudo ./scripts/startup.sh

3.启动admin service

修改/data/apollo/apollo-adminservice/config里的数据库配置

# DataSource
spring.datasource.url = jdbc:mysql://x.x.x.110:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root

改成你前面倒入的ApolloConfigDB所在的mysql url修改/data/apollo/apollo-adminservice/scripts/startup.sh

export JAVA_OPTS="-Xms1280m -Xmx1280m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=768m -XX:MaxNewSize=768m -XX:SurvivorRatio=8"

这里我修改了jvm的参数,修改端口为:SERVER_PORT=${SERVER_PORT:=8091}

因为我的admin和config部署在一台机器上,所以有端口冲突,这里换了下端口。

然后启动

sudo ./scripts/startup.sh

4.启动portal

修改/data1/apollo/config/application-github.properties,注意db为ApolloPortalDB

# DataSource
spring.datasource.url = jdbc:mysql://172.26.183.110:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root

修改同目录下的apollo-env.properties

# See the License for the specific language governing permissions and
# limitations under the License.
#
#local.meta=http://localhost:8080
#dev.meta=http://fill-in-dev-meta-server:8080
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
#lpt.meta=${lpt_meta}

pro.meta=http://172.26.183.110:8090,http://172.26.17.237:8090

这里我只留了pro, 然后url连Eureka (config service)的ip 和端口

然后启动

sudo ./scripts/startup.sh

到这里就部署完了,在这个过程中我想换掉Eureka用我们自己的注册组件consul,后来发现不光是单纯改配置的问题,还得重新编译源码,java的环境过于复杂了,我不太懂,不会弄,比较浪费时间,就用它自带的Eureka了。

todo:apollo的使用,以及go调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卒曹阿瞒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值