2020系统综合实践 第1次实践作业

一、课程调查

进入大三下学期的后半段,大学阶段的理论课程应该已经修得八九不离十了,在这个时间点迎来系统综合实践这门课,作为培养计划的一门新课程,我们非常希望了解你们对于课程的希望,请写下你对这门课的认识和你理想中的这门课程是怎么样的。****

  • 对这门课的认识:系统综合实践,听到这个课程的名字,感觉应该是关于计算机系统的上机课,偏硬件方面。因为自己不是很擅长硬件方面,既有点担心学不好,也有点期待能在硬件知识上有些长进。当知道要用到博客园和虚拟机的时候,心态有点崩溃。
  • 理想中这门课程是怎么样的:既然博客园和虚拟机又来了,那就好好学吧,这方面自己是比较薄弱的,希望好好努力有所长进,然后顺利毕业。

二、了解微服务

第一次作业我们将接触一种新型的软件架构——微服务(也许部分同学已经有所了解)。大家要做的是学习并了解该技术,微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。

  • 微服务是什么

    微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

  • 微服务的特点

    preview

  • 相较于传统的软件架构,它的优缺点

    • 优点

      微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。最终的结果是有更多的资源可以提供给其它任务。

      微服务应用程序的另一个好处是,它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但它更容易识别和隔离问题,从而加快开发速度并支持DevOps和持续应用程序开发。

      第三个好处是,微服务架构有助于新兴的云服务,如事件驱动计算。类似AWS Lambda这样的功能让开发人员能够编写代码处于休眠状态,直到应用程序事件触发。事件处理时才需要使用计算资源,而企业只需要为每次事件,而不是固定数目的计算实例支付。

    • 缺点

      没有银弹,微服务提高了系统的复杂度;开发人员要处理分布式系统的复杂性;服务之间的分布式通信问题;服务的注册与发现问题;服务之间的分布式事务问题;数据隔离再来的报表处理问题;服务之间的分布式一致性问题;服务管理的复杂性,服务的编排;不同服务实例的管理。

  • 微服务是怎样部署的

    • 微服务架构对于部署的要求

      部署速率,Amazon与NetFlix都有千个服务,每个服务都有持续部署的要求,Amazon的服务每秒都会部署一次;

      部署自动化,一切都要自动化,IaaS与PaaS解决I层与P层自动化部署,微服务有自动部署与运维工具,并实现Auto-Scaling;

      部署提供基础机制,为实现分布式部署要求,部署机制一般都有资源池化、服务的生命周期来看,部署服务与服务注册是一体的;

    • MS部署的解决方案

      TOSCA:云应用拓扑标准,一种描述云化部署的DSL,我司主推一个标准,PaaS的部署系统和MANO用的都是TOSCA;

      Kubernetes:Google开源的容器管理系统,提出了Pod/Service/Labels等概念,以ETCD为中心,PaaS基于K8S开发出了我司的云化部署平台;

      Mesosphere:DCOS,数据中心操作系统,基于mesos实现资源池化,有自身的编排工具;分布式LAB基于DCOS的思想做出了一套部署与集群管理系统(HASEN);

三、学习docker技术

3.1学习了解docker的相关概念

  • docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

  • docker compose

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

  • Dockerfile

    Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

  • docker machine

    Docker Machine 是 Docker 官方三剑客项目之一 ,负责使用 Docker 容器的第 一步:在多种平台上快速安装和维护Docker运行环境 ,它支持多种平台 ,让用户可以在很短时间内在本地或云环境中搭建一套 Docker 主机集群 。

  • Swarm

    Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.

  • k8s

    搭建容器集群和进行容器编排的主流开源项目,适合搭建PaaS平台。一般来说,Kubernetes是和Docker配合使用的,Kubernetes调用每个节点上的Docker去创建和管理容器,所以,你可以认为Kubernetes是大脑,而Docker是四肢。

3.2搭建docker环境

3.2.1 设置仓库

卸载旧版本。如果安装过docker的旧版本,请卸载它们

sudo apt-get remove docker docker-engine docker.io containerd runc

更新 apt 包索引

sudo apt-get update

安装 apt 依赖包,用于通过HTTPS来获取仓库

sudo apt-get install    
	apt-transport-https     
	ca-certificates     
	curl     
	gnupg-agent     
	software-properties-common 

添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

使用以下指令设置稳定版仓库

sudo add-apt-repository    
	"deb [arch=amd64] https://download.docker.com/linux/ubuntu    
	$(lsb_release -cs)    
	stable"

3.2.2 安装 Docker Engine-Community

更新 apt 包索引

sudo apt-get update

安装最新版本的 Docker Engine-Community 和 containerd

sudo apt-get install docker-ce docker-ce-cli containerd.io

启动docker

sudo systemctl start docker

配置阿里云镜像加速器

sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json <<-'EOF' 
{  
  "registry-mirrors": ["https://v54081p6.mirror.aliyuncs.com"] 
} 
EOF 
sudo systemctl daemon-reload 

重启docker

systemctl restart docker

通过运行 hello-world 映像来验证是否正确安装了Docker Engine-Community

sudo docker run hello-world

3.3容器的创建、删除、更新和查询

使用 docker pull 命令来载入 ubuntu 镜像

sudo docker pull ubuntu

启动并退出容器

sudo docker run -it ubuntu /bin/bash 
exit

查询所有的容器

sudo docker ps -a

使用 docker start 启动一个容器

sudo docker start 6301bc58c415

停止容器
sudo docker stop 6301bc58c415

更新容器
sudo docker container update --help

删除容器
sudo docker rm -f 6301bc58c415

3.4创建并维护自己的镜像仓库

查询镜像列表

sudo docker images

在阿里云上创建镜像仓库的命名空间和镜像仓库

在docker里登入阿里云

sudo docker login --username=yxyolo111 registry.cn-hangzhou.aliyuncs.com

将镜像推送到Registry

sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/yyyxy/yxytry1:[镜像版本号]
sudo docker push registry.cn-hangzhou.aliyuncs.com/yyyxy/yxytry1:[镜像版本号]

push成功后可以在阿里云镜像仓库里看到

四、遇到的问题

一开始ubuntu一直连不上网,第一步更新apt包索引就卡住了,百度试了很多种方法,最后终于找到一种可以解决的

在本机设置里把网络连接改为这样

然后打开VMware,在虚拟机设置里把网络适配器选项改成这样

原文地址:https://www.cnblogs.com/yxyolo/p/12723022.html