加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

塑造一套适合微服务的高可用架构

发布时间:2021-06-22 13:39:20 所属栏目:云计算 来源:互联网
导读:首先,是机器资源的管理。在微服务的架构中,原有的单体服务被拆分成了一个个独立单元的应用程序,这些服务体量较小,可以独立运行在配置较小的机器上。为了故障

首先,是机器资源的管理。在微服务的架构中,原有的单体服务被拆分成了一个个独立单元的应用程序,这些服务体量较小,可以独立运行在配置较小的机器上。为了故障隔离,我们会尽可能的把这些服务部署在不同的虚拟机上,这样机器的数量会成倍增加。对于运维来说,每个新服务部署时,需要先查看现有机器的剩余资源是否满足新服务的需求,有时可能因为评估不准确造成来回扩容、迁移,或者资源浪费。

 

开始时,我们的架构可能时这样的

 

image.png

 

为了解决上面的问题,可以使用 MESOS ( 布式资源管理框架),它可以 让我们像用一台电脑(一个资源池)一样使用整个数据中心。

 

mesos 部署时分为 master 和 agent 两个角色,当然,你可以在同一台机器启动它们。

 

安装Mesos 前需要安装zookeeper,mesos 使用zk 实现高可用和选举,包括一个 master leader 和 几个备份 master 避免宕机。

 

Mesos master 负责管理各个Framework和Slave,并将Slave上的资源非配给各个Framework。

 

Mesos agent 负责管理本节点上的各个Mesos Task,为各个Executor分配资源 (低版本为 mesos-slave)。

 

$cat>/tmp/bintray-mesos-el.repo<

 

#bintray-mesos-el-packagesbymesosfromBintray

 

[bintray-mesos-el]

 

name=bintray-mesos-el

 

baseurl=https://dl.bintray.com/apache/mesos/el7/x86_64

 

gpgcheck=0

 

repo_gpgcheck=0

 

enabled=1

 

EOF

 

$sudomv/tmp/bintray-mesos-el.repo/etc/yum.repos.d/bintray-mesos-el.repo

 

$sudoyumupdate

 

$sudoyuminstallmesos

 

$tree/etc/mesos-master

 

/etc/mesos-master/

 

|--hostname

 

|--ip

 

|--log_dir

 

|--quorum#quorum>(numberofmasters)/2

 

`--work_dir

 

$tree/etc/mesos-agent

 

/etc/mesos-agent/

 

|--containerizers#容器类型,默认mesos,可以添加docker,如:mesos,docker

 

|--hostname

 

|--ip

 

|--log_dir

 

|--master#master地址,格式为host:port或

 

zk://host1:port1,host2:port2,.../path或file:///path/to/file

 

|--resources#设置总资源大小,可以设置小些来预留更多机器资源

 

`--work_dir

 

$cat/etc/mesos/zk#设置mesos在zk中的存储目录

 

zk://192.168.100.9:2181,192.168.100.110:2181,192.168.100.234:2181/mesos

 

$systemctlstartmesos-master

 

$systemctlstartmesos-slave

 

当mesos服务启动后,agent 会向master 节点汇报机器资源,包括CPU、内存、磁盘等。当我们要发布一个服务时,只需要设置这个服务的CPU、内存、磁盘参数, mesosmaster 会自动帮我们选择有足够资源的机器去运行,如下图

 

image.png

 

我们将微服务的启动都交给 Mesos 管理,这样我们只需要关注整体资源即可。MESOS 提供了UI界面,可以直接访问 mesos master 的5050 端口,查看集群资源使用情况。总体使用情况 及 Agent 节点使用情况

 

image.png

 

完成以上后,我们的架构变成了这样

 

image.png

 

使用Marathon 进行微服务管理

 

Marathon 是建立在 Mesos 上的私有 PaaS平台。它能自动处理硬件或者软件故障,并确保每个应用程序都"永远在线"。我们使用 Marathon 管理微服务有以下优势1. 支持容器和非容器,不受限于服务启动类型,操作系统版本等。2. 漂亮而强大的用户界面,可以在UI 上进行快捷方便的应用程序配置3. 支持约束条件,例如允许一个mesos agent 节点只运行一个应用程序。4. 支持健康检查。可以配置 http、https、tcp、command 类型的监控检查。5. 完整的REST API,易于集成和编写脚本。这个对于后期集成来说至关重要。

 

#Addtherepository

 

$sudorpm-Uvhhttp://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm

 

#Installpackages

 

$sudoyum-yinstallmesosmarathon

 

#marathonandmesoszkpath

 

$cat/etc/default/marathon

 

MARATHON_MESOS_USER="root"

 

MARATHON_MASTER="zk://192.168.100.9:2181,192.168.100.110:2181,192.168.100.234:2181/mesos"

 

MARATHON_ZK="zk://192.168.200.9:1181,192.168.100.110:2181,192.168.100.234:2181/marathon"

 

systemctlstartmarathon

 

启动后,直接访问 marathon 的 8080 端口,就能看到一个漂亮强大的 UI 界面。

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读