【云原生】项目上云最佳实践

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

博主昵称跳楼梯企鹅
博主主页面链接博主主页传送门

博主专栏页面连接专栏传送门--网路安全技术
创作初心本博客的初心为与技术朋友们相互交流每个人的技术都存在短板博主也是一样虚心求教希望各位技术友给予指导。
博主座右铭发现光追随光成为光散发光;
博主研究方向渗透测试、机器学习 ;
博主寄语感谢各位技术友的支持您的支持就是我前进的动力 ;

 

 一、浅谈云计算

1.概念

云计算cloud computing是分布式计算的一种指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序然后通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期简单地说就是简单的分布式计算解决任务分发并进行计算结果的合并。因而云计算又称为网格计算。通过这项技术可以在很短的时间内几秒钟完成对数以万计的数据的处理从而达到强大的网络服务。

2.为什么要用云计算

1云计算提高了速度和敏捷性

如果今天的商业环境有一个基本的事实那就是它正在以不断加快的速度发展。

每个企业都面临着压力必须对不断变化的商业环境作出更快的反应。不幸的是传统的IT流程与今天的速度并不匹配。配置资源通常需要数周或数月时间因此减慢了业务的反应速度。有了云计算资源可以在几分钟内获得这意味着企业可以更快地对新市场的发展做出反应。

2实现可持续创新

然而在今天的商业环境中成功需要的不仅仅是速度。同样重要的是创新——即开发新产品、评估其潜在市场认可度然后推出成功产品、淘汰失败产品的能力。

在这方面云计算也比传统的IT基础设施方法更适合。因为资源的可用性非常快所以很容易很快地体验新产品。公司可以立即获得用户反馈而不是等上几个月才让产品进入市场试验。

3有助于管理成本

传统IT基础设施的另一个现实是它的价格非常昂贵。显然基础设施需要物理资源服务器、存储和网络。但除此之外运营这些资源还需要大量的开支人员、设施和电力。

而且大多数IT组织在基础设施方面效率不高。采购很少而且数量很少因此资源成本很高。操作过程通常不是自动化的所以人工成本也很高。

相比之下大型云服务提供商则是批量购买。而且因为他们的经营规模非常之大所以必须投资于过程自动化。并且他们不可能雇佣或负担得起足够的员工来手动管理他们庞大的服务器群。

4支持应用程序弹性

应用程序正常运行时间一直很重要。但如今可用性比以往任何时候都重要。这是因为越来越多的公司正在成为数字化企业他们的客户和供应商通过基于IT的机制进行互动和参与。

向数字化的转变使应用程序的弹性变得至关重要。简单地说应用程序需要保持可用性即使面临基础设施故障。

大多数内置应用程序表现出较差的弹性。由于设备非常昂贵大多数应用程序负担不起冗余因此它们包含SPOFs(单点故障)。当基础设施出现故障时应用程序会停止运行直到进行修复为止。

云计算极大地改变了弹性方程。首先很容易获得额外的基础设施资源。因此如果出现故障在新的资源上重启应用程序是很简单的。

但应用程序的弹性不仅仅是快速获得替换包。因为资源是随时可用的而且组织只为他们使用的东西付费所以避免SPOF应用程序设计和使用冗余资源是划算的。如果出现故障应用程序将继续对仍在工作的资源进行操作从而允许操作将问题作为后台任务处理。

参考资料链接

3.云计算服务

云部署模型

云环境主要分为三种类型也称为云部署模型。企业可以选择在公共云、私有云或混合云上运行应用程序具体取决于他们的要求。

公共云

公共云环境由外包云提供商所有许多企业可以通过互联网以按使用付费的模式访问。这种部署模型为希望节省 IT 运营成本的企业提供服务和基础设施但负责创建和维护资源的是云提供商。

私有云

这种云部署模型是由单个企业拥有的定制基础架构。它提供了一个更加可控的环境在该环境中对 IT 资源的访问更加集中在企业内部。该模型可以在外部托管也可以在内部进行管理。尽管私有云托管可能很昂贵但对于大型企业来说它可以提供更高级别的安全性和更多自主权来定制存储、网络和计算组件以满足其 IT 需求。

混合云

对于寻求私有云和公共云部署模型的好处的企业来说混合云环境是一个不错的选择。通过结合这两种模型混合云模型提供了更量身定制的 IT 解决方案可以满足特定的业务需求。

 

 

二、云计算基础服务

 云计算的三种主要服务模式——基础设施即服务IaaS、平台即服务PaaS和软件即服务SaaS。

1基础设施即服务IaaS

这是最常见的云计算服务模型因为它提供了虚拟服务器、网络、操作系统和数据存储驱动器的基础架构。它实现了许多企业通过云寻求的灵活性、可靠性和可扩展性并消除了办公室对硬件的需求。这使其成为寻求经济高效的 IT 解决方案以支持业务增长的中小型组织的理想选择。IaaS 是一项完全外包的按使用付费服务可作为公共、私有或混合基础设施使用。

2平台即服务PaaS

这是云计算提供商部署基础设施和软件框架的地方但企业可以开发和运行自己的应用程序。可以通过 PaaS 快速轻松地创建 Web 应用程序并且该服务足够灵活和强大以支持它们。PaaS 解决方案具有可扩展性非常适合多个开发人员在单个项目上工作的业务环境。对于需要利用现有数据源例如 CRM 工具的情况它也很方便。

3软件即服务SaaS

这种云计算解决方案涉及通过互联网向通过订阅或按使用付费模式付费的各种企业部署软件。对于 CRM 和需要大量 Web 或移动访问的应用程序例如移动销售管理软件来说它是一个有价值的工具。SaaS 从一个中心位置进行管理因此企业不必担心自己维护它是短期项目的理想选择。

三、云计算分层架构应用

 

1、应用层

应用层是以友好的用户界面为用户提供所需的各项应用软件和服务应用层直接面向客户需求向企业客户提供CRM、ERP、OA等企业应用。

2、中间层

中间层是承上启下的一层它在基础设施层所提供资源的基础上为用户提供服务包括了访问控制、资源管理、数据库和中间件等集群同时可通过集成API为客户提供定制开发接口。

3、基础设施层

基础设施层是为中间层或者用户提供其所需的计算和存储等资源并通过虚拟化等技术奖资源池化以实现资源的按需分配和快速部署。

 

四、云原生架构----Docker

1.Docker框架

Docker是客户端-服务器架构的应用主要由以下部分组成

  • 服务端是一个名为dockerd守护进程用来监听REST API请求并管理Docker对象比如镜像、容器、存储卷及网络等。
  • 命令行客户端CLI也就是我们平常在控制台输入的docker命令行通过调用REST API进行控制Docker daemon或者同其进行集成。
  • 镜像仓库Docker Registries镜像仓库用来存储Docker镜像。

 2.Docker对象

  • IMAGES 

镜像一般是通过指令创建的只读文件用来生成容器。一般一个镜像是基于另外一个镜像并添加一些额外的指令创建的可以通过一个名为Dockerfile的文件来生成一个镜像在Dockerfile中的每一行指令会生成一层layer。当Dockerfile有改动需要重新生成镜像时只需要重新生成改变的那些层就可以这样就可以使得镜像文件更加轻量、快速构建。

  • CONTAINERS

容器是通过镜像文件生成的运行实例。可以通过REST API或者docker client进行创建、启动、停止、移动或者删除一个容器。

  • SERVICE

用来管理和扩展多个容器需要同docker swarm一起工作

 3.Docker的安装部署

1配置初始化

# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.xxx.xxx
NETMASK=255.255.255.0
GATEWAY=192.168.xxx.xxx

2配置DNS

[root@localhost yum.repos.d]# vim /etc/resolv.confnameserver 192.168.xxx.xxx

3配置主机

# hostnamectl --static set-hostname docker-90

4挂载

[root@localhost ~]# mkdir /iso
[root@localhost ~]# mount /dev/sr0 /iso
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# vi /etc/rc.d/rc.local
##挂载
mount /dev/sr0 /iso

5镜像源配置

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -rf *.repo
[root@localhost yum.repos.d]# vi base.repo
vi内部内容如下
[root@localhost yum.repos.d]# cat base.repo
[base]
name=base
baseurl=file:///iso
enabled=1
gpgcheck=0

继续输入命令
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache

6设置环境

[root@localhost yum.repos.d]# iptables -F
[root@localhost yum.repos.d]# iptables -t nat -F
[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# systemctl disable firewalld
[root@localhost yum.repos.d]# systemctl stop NetworkManager
[root@localhost yum.repos.d]# systemctl disable NetworkManager
[root@localhost yum.repos.d]# systemctl stop postfix
[root@localhost yum.repos.d]# systemctl disable postfix

7修改内核

[root@localhost yum.repos.d]# vim /boot/grub2/grub.cfg
将 第 100 行的
rhgb quiet 去掉改为 vga=817


修改目录路径
[root@localhost yum.repos.d]# vim /etc/bashrc
#第41行修改
...... && PS1="[\u@\h \w]\\$ 将 \W 改为 \w

8导入key

[root@docker ~]#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 

9安装yum源

[root@docker ~]#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
[root@docker ~]#yum clean all
[root@docker ~]#yum makecache fast

10部署docker-ce

清理环境
[root@Docker1 ~]#systemctl stop docker
[root@Docker1 ~]#yum remove docker-ce docker-ce-cli docker-selinux

配置网络
root@Docker1 ~]#cd /etc/yum.repos.d/
[root@Docker1 /etc/yum.repos.d]#mv elrepo.repo elrepo.repo.bak
[root@Docker1 /etc/yum.repos.d]#vim aliyun.repo
###输入以下内容
[base]
name=base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0

[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0

[aliyun-os]
name=aliyun-os
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0

[aliyun-epel]
name=aliyun-epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=0

[aliyun-extra]
name=aliyun-extra
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0

安装最新版本docker-ce
[root@Docker1 /etc/yum.repos.d]# yum install docker-ce docker-ce-cli containerd.io

11测试docker 工具

[root@Docker1 /etc/yum.repos.d]# docker -v
Docker version 20.10.6, build 370c289

查看docker详情

#docker info

 12配置加速器

https://cr.console.aliyun.com/cn-guangzhou/instances/mirrors


[root@Docker1 /etc/docker]# vim /etc/docker/daemon.json

## 输入以下内容
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] ##这里修改为自己的阿里云加速器地址
}
[root@Docker1 /etc/docker]# systemctl daemon-reload
[root@Docker1 /etc/docker]# systemctl restart docker

 13启动

[root@Docker1 /etc/yum.repos.d]# systemctl start docker

docker开机自启动# systemctl enable docker

[root@Docker1 /etc/yum.repos.d]# systemctl status docker

五、云原生架构----Kubernetes

 1.Kubernetes系统架构解析

  • K8S是谷歌开源的容器集群管理系统他构建在容器之上为容器化的应用提供资源调度部署运行服务发现扩容缩容等一整套功能。
  • 将容器宿主机组成集群统一进行资源调度自动管理容器生命周期提供跨节点服务发现和负载均衡更好的支持服务概念、划分、细分服务之间的边界比如labelpod等概念的引入
  • 轻量迁移方便部署快捷插件化可扩展

2.controller控制器原理解析

Controller Manager主要提供了一个分发事件的能力而不同的Controller只需要注册对应的Handler来等待接受和处理事件。
在Controller Manager的帮助下 Controller的逻辑可以做的非常纯粹只需要实现相应的EventHandler即可以Deployment controller为例。

  • List是短连接实现用于获取该资源的所有Object
  • Watch是长连接实现用于监听在List中获取的资源的变换
  • api-server检测到资源产生变更时会主动通知到Controller manager(利用分块传输编码

3.list-watch机制解析

Kubernetes 是通过 List-Watch 的机制进行每个组件的协作保持数据同步的每个组件之间的设计实现了解耦。
用户是通过 kubectl 根据配置文件向 APIServer 发送命令在 Node 节点上面建立 Pod 和 Container。
APIServer 经过 API 调用权限控制调用资源和存储资源的过程实际上还没有真正开始部署应用。这里需要 Controller Manager、Scheduler 和 kubelet 的协助才能完成整个部署过程。
在 Kubernetes 中所有部署的信息都会写到 etcd 中保存。实际上 etcd 在存储部署信息的时候会发送 Create 事件给 APIServer而 APIServer 会通过监听Watchetcd 发过来的事件。其他组件也会监听WatchAPIServer 发出来的事件。

六、无服务应用架构设计

1.优点

无服务器架构的优点之一是企业机构不用管理运行应用的后端基础设施。例如开发人员不必担心容量规划问题因为有人会为他们解决。云服务提供商提供自动化的无服务器架构这种架构可以在必要时提供更多的资源或缩小规模这就又为开发人员减少了一项待办任务。开发人员不必负责维护后端基础设施包括配置和扩展等可以将更多的时间用于其他更有意义的项目。

这种弹性为企业机构解决了容量规划等掌管服务器时所需要担心的问题。而且企业不负责后端基础设施因此也不需要在服务器崩溃或出错时进行修复。云服务提供商所提供的自动扩展和调试功能帮助无服务器架构成为一个值得投资的项目。

无服务器架构的另一个优点是成本可能是一个物有所值的选择。节省团队的时间就是节省资金团队花在后端基础设施维护上的时间越少企业减少的成本就越多。此外使用无服务器架构的企业不需要一个完整的团队来管理服务器因此开发人员不必是服务器专家这使企业机构的招聘条件变得更加宽松。

2.缺点

企业也应该考虑这种架构的一些缺点。

由于无服务器架构的性质在上面运行的应用无法被监控。服务器不属于自己企业机构无法完整地看到上面所运行的一切也就更加难以衡量一个应用的性能。同时他们也无法轻易看到性能问题的发展趋势或主动预防问题。比方说因为不负责后端企业机构无法深入研究调查日志。对于企业机构来说转移这项责任在某些方面可能是件好事但不好的方面是他们无法看到关键性能分析也无法了解服务器上的情况究竟如何。

无服务器架构的另一个潜在缺点是安全问题。由于受攻击面大于企业通常使用的内部服务器无服务器应用可能会面临更大的安全风险。同样这也取决于云服务提供商和第三方服务所采取的措施与企业安全能力的比较结果。如果企业机构认为自己的服务器安全性不如AWS Lambda那么与云供应商合作更加明智。

资源限制也可能是无服务器架构的缺点之一。虽然无服务器架构具有弹性可以通过加速和减速来为应用分配资源但它是有限制的。如果一家企业机构的应用大到超过这些限制那么可能就不适合使用无服务器架构。

某些应用在设计上不适合成为无服务器应用所以无服务器架构并非适合每一个用例。如果根据应用所使用的资源来定价有些应用会不断消耗所获得的计算资源使无服务器架构的成本激增。此类应用会占用越来越多的资源而企业机构必须为此买单。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6