标签:最好 生产环境 ash code 生产 名称 别人 私有 高可用
FastDFS 是国内电商网站非常出名的一套框架,在国内的电商网站使用概率是非常大的,是淘宝的前架构师用 c 语言编写的一款开源的分布式文件系统。充分考虑了冗余备份(纵向)、负载均衡、线性扩容(横向)等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
作用:分布式存储静态文件;提供文件上传和下载功能。
FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。
服务端两个角色:
客户端上传文件后存储服务器将文件 file_id 返回给客户端,此文件 file_id 用于以后访问该文 件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。 file_id样式如下所示:
文件的下载地址就是在此文件的前面加上 storage_ip:端口号
我们使用Docker来安装FastDFS。
什么是虚拟化:使用宿主机器的硬件及操作系统,搭建自己的硬件和操作系统安装自己的应用,实现操作系统的隔离;也就是说在已有的硬件资源之上,将资源分成多个不同的实体身份,比如一台mac电脑,可以虚拟出多个ubuntu和windows系统。
Docker简介:
1.使用的是容器、虚拟技术
2.直接在宿主主机的操作系统上调用硬件资源--可以在计算机中安装linux操作系统,docker可以直接运行在linux,是以容器的形式体现的,实现沙盒
3.不会虚拟化硬件和操作系统,所以操作速度快
4.应用都在Docker容器中
1)上手快
用户只需要几分钟,就可以把自己的程序“Docker 化”。Docker 依赖于“写时复制” (copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码即改” 的境界。
随后,就可以创建容器来运行应用程序了。大多数 Docker 容器只需要不到 1 秒中即可 启动。由于去除了管理程序的开销,Docker 容器拥有很高的性能,同时同一台宿主机中也 可以运行更多的容器,使用户尽可 能的充分利用系统资源。
2)职责的逻辑分类
使用 Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如 何管理容器。Docker 设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署 的生产环境一致性。从而降低那种“开 发时一切正常,肯定是运维的问题(测试环境都是正 常的,上线后出了问题就归结为肯定是运维的问题)”
3)快速高效的开发生命周期
Docker 的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用 程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker 就像一个盒子,里面 可以装很多物件,如果需要这些物件的 可以直接将该大盒子拿走,而不需要从该盒子中一件 件的取。)
4)鼓励使用面向服务的架构
Docker 还鼓励面向服务的体系结构和微服务架构。Docker 推荐单个容器只运行一个应 用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服 务都可以表示为一系列内部互联的 容器,从而使分布式部署应用程序,扩展或调试应用程序 都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程 序)
镜像是构建 Docker 的基石,也是 Docker 生命周 期中的“构建”部分,用户基于镜像来运行自己的容器,由一系列指令一步一步构 建出来,镜像体积很小,非常“便携”,易于分享、存储和更 新。
Docker 用 Registry 来保存用户构建的镜像。Registry 分为公共和私有两种。Docker 公司 运营公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的 镜像(说明:在 Docker Hub 下 载镜像巨慢,可以自己构建私有的 Registry)。
更新ubuntu的apt源索引
sudo apt-get update
安装包允许apt通过HTTPS使用仓库
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
如果提示gpg: 找不到有效的 OpenPGP 数据 可以使用一下命令:
sudo curl -fsSL https://get.docker.com/gpg | sudo apt-key add -
设置Docker稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
添加仓库后,更新apt源索引
sudo apt-get update
安装最新版Docker CE(社区版)
sudo apt-get install docker-ce
检查Docker CE是否安装正确
sudo docker run hello-world
出现如下信息,表示安装成功
为了避免每次命令都输入sudo,可以设置用户权限,注意执行后须注销重新登录
sudo usermod -a -G docker $USER
安装完成Docker后,默认已经启动了docker服务,如需手动控制docker服务的启停,可执行如下命令
# 启动docker
sudo service docker start
# 停止docker
sudo service docker stop
# 重启docker
sudo service docker restart
docker image ls
我们在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名 来指定该仓库中的某一具体的镜像,例如 docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明从镜像 Ubuntu:12.04 启动一个容器,而这个镜像的操 作系统就是 Ubuntu:12.04。在构建容器时指定仓库的标签也是一个好习惯。
Docker维护了镜像仓库,分为共有和私有两种,共有的官方仓库Docker Hub(https://hub.docker.com/)是最重要最常用的镜像仓库。私有仓库(Private Registry)是开发者或者企业自建的镜像存储库,通常用来保存企业 内部的 Docker 镜像,用于内部开发流程和产品的发布、版本控制。
要想获取某个镜像,我们可以使用pull命令,从仓库中拉取镜像到本地,如
docker image pull library/hello-world
docker image pull
是抓取 image 文件的命令。library/hello-world
是 image 文件在仓库里面的位置,其中library
是 image 文件所在的组,hello-world
是 image 文件的名字。
由于 Docker 官方提供的 image 文件,都放在library
组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成下面这样。
docker image pull hello-world
docker image rm 镜像名或镜像id
如
docker image rm hello-world
docker run [option] 镜像名 [向启动容器中传入的命令]
常用可选参数说明:
交互式容器
例如,创建一个交互式容器,并命名为myubuntu
docker run -it --name=myubuntu ubuntu /bin/bash
在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。
docker run -dit --name=myubuntu2 ubuntu
docker exec -it 容器名或容器id 进入后执行的第一个命令
如
docker exec -it myubuntu2 /bin/bash
# 列出本机正在运行的容器
docker container ls
# 列出本机所有容器,包括已经终止运行的
docker container ls --all
# 停止一个已经在运行的容器
docker container stop 容器名或容器id
# 启动一个已经停止的容器
docker container start 容器名或容器id
# kill掉一个已经在运行的容器
docker container kill 容器名或容器id
docker container rm 容器名或容器id
我们可以通过如下命令将容器保存为镜像
docker commit 容器名 镜像名
我们可以通过save命令将镜像打包成文件,拷贝给别人使用
docker save -o 保存的文件名 镜像名
如
docker save -o ./ubuntu.tar ubuntu
在拿到镜像文件后,可以通过load方法,将镜像加载到本地
docker load -i ./ubuntu.tar
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
可以利用已有的FastDFS Docker镜像来运行FastDFS。
获取镜像可以通过下载
docker image pull delron/fastdfs
也可以直接使用提供的镜像备份文件,将fastdfs_docker.tar复制到ubuntu的桌面,执行命令:
docker load -i fastdfs_docker.tar
加载好镜像后,就可以开启运行FastDFS的tracker和storage了。
执行如下命令开启tracker 服务
sudo docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
我们将fastDFS tracker运行目录映射到本机的 /var/fdfs/tracker目录中。
执行如下命令查看tracker是否运行起来
docker container ls
如果想停止tracker服务,可以执行如下命令
docker container stop tracker
停止后,重新运行tracker,可以执行如下命令
docker container start tracker
执行如下命令开启storage服务
sudo docker run -dti --network=host --name storage -e TRACKER_SERVER=10.211.55.5:22122(宿主ip地址) -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
执行如下命令查看storage是否运行起来
docker container ls
如果想停止storage服务,可以执行如下命令
docker container stop storage
停止后,重新运行storage,可以执行如下命令
docker container start storage
注意:如果无法重新运行,可以删除/var/fdfs/storage/data
目录下的fdfs_storaged.pid
文件,然后重新运行storage。
标签:最好 生产环境 ash code 生产 名称 别人 私有 高可用
原文地址:https://www.cnblogs.com/cl-python/p/9256130.html