当前位置: 首页 > news >正文

中电云主机怎样登入创建的网站零起飞网站建设工作室

中电云主机怎样登入创建的网站,零起飞网站建设工作室,小荷作文网,白水网站建设#作者:西门吹雪 文章目录 micro-Services-TutorialCeph分布式文件共享方案部署Ceph集群使用CephCeph在kubernetes集群中的使用 micro-Services-Tutorial 微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应…

#作者:西门吹雪

文章目录

  • micro-Services-Tutorial
  • Ceph分布式文件共享方案
  • 部署Ceph集群
  • 使用Ceph
  • Ceph在kubernetes集群中的使用

micro-Services-Tutorial

微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。然而微服务又需要限流器(Rate Limiter),数据传输(Trasport 序列化和反序列化),日志(Logging),指标(Metrics)
,断路器(Circuit breaker),请求追踪(Request tracing ),服务发现(Service Discovery),因此就想写一篇关于微服务和微服务组件的总结来记录下自己使用优化的过程.

Ceph分布式文件共享方案

在使用Kubeneters的时候在各个容器中都需要使用同一套文件,但是如果使用NAS盘的方式话,无论是在更新或者是读取时候都要几分钟时间去部署,而且有时候还会出现文件占用失败的问题,调研了一段时间之后发现Kuberneters结合比较好的文件系统用Ceph分布式文件共享方案去解决这样的问题.

  • 环境准备
    在安装分布式之前需要先进行环境准备,需要3台服务器来做集群,ceph默认会进行保存三份文件来保障数据安全,服务器系统是centos7.3:
主机名IP部署服务
host1120.92.172.35主机1
host2120.92.169.191主机2
host3120.92.165.229主机3

首先安装docker环境,这个可以根据电脑系统的不同,选择不同的安装方式。

  • Mac安装
  • Ubantu安装
  • Windows安装
  • centos安装

我这里是用脚本直接在centos上直接安装的:

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo;yum-config-manager --enable docker-ce-edge;yum-config-manager --disable docker-ce-edge;yum install docker-ce;systemctl start docker.service;
systemctl enable docker.service;

安装成功之后可以查看下:

> docker --verison
Docker version 18.06.0-ce, build 0ffa825

注意:这里需要配置好国内docker源,这样可以提高速度

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

部署Ceph集群

在主机1上部署运行mon,用以让客户端连接 Ceph 监视器:

node1> docker run -d \--name=mon \--net=host \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \-e MON_IP=120.92.172.35 \-e CEPH_PUBLIC_NETWORK=192.168.1.0/24 \ceph/daemon mon

查看docker和ceph运行状态:

> docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS              PORTS               NAMES
b0c9d7680461        ceph/daemon         "/entrypoint.sh mon"   About a minute ago   Up About a > docker exec mon ceph -s
cluster:id:     da8f7f5b-b767-4420-a510-287f4ced25dehealth: HEALTH_OKservices:mon: 1 daemons, quorum ceph-1mgr: no daemons activeosd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0  objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:     

由于我们没有映射端口,但是Ceph容器会把后续需要使用到的端口映射出来:

node1> yum install tcping
node1> tcping 120.92.172.35 6789
120.92.172.35 port 6789 open

通常Ceph有两种方式实现在各个节点之间共享配置,第一种是以文件的方式实现共享,需要把第一个启动起来的节点的文件CP到其他节点,另外一种是使用配置服务(比如etcd或者consul). 这里我使用的第一种共享配置,将主机1上的配置文件复制到主机2和主机3,复制的路径包含/etc/ceph和/var/lib/ceph/bootstrap-*下的所有内容。

node2 > mkdir -p /var/lib/ceph
node1> scp -r /etc/ceph root@120.92.169.191:/etc
node1> scp -r /var/lib/ceph/bootstrap* root@120.92.169.191:/var/lib/cephnode3 > mkdir -p /var/lib/ceph
node1 > scp -r /etc/ceph root@192.168.3.103:/etc
node1 > scp -r /var/lib/ceph/bootstrap* root@120.92.165.229:/var/lib/ceph

启动主机2和主机3上的mon,在主机2上执行以下命令启动 mon,修改 MON_IP:

> docker run -d \--net=host \--name=mon \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \-e MON_IP=120.92.169.191 \-e CEPH_PUBLIC_NETWORK=192.168.1.0/24 \ceph/daemon mon

在主机3上执行以下命令启动 mon,修改 MON_IP:

> docker run -d \--net=host \--name=mon \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \-e MON_IP=120.92.165.229 \-e CEPH_PUBLIC_NETWORK=192.168.1.0/24 \ceph/daemon mon

在节点上在查看ceph集群状态可以看到有三个mos上线了:

> docker exec mon ceph -scluster:id:     da8f7f5b-b767-4420-a510-287f4ced25dehealth: HEALTH_OKservices:mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3mgr: no daemons activeosd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0  objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:  

然后需要运行osd服务把磁盘给ceph作为文件共享系统的基础存储,因此我们需要为三台服务器挂载对应的磁盘(这里选择挂载100GB的SSD云磁盘).

> fdisk -l
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008d73aDevice Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    83884031    41940992   53  LinuxDisk /dev/vdb: 107.5 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

这时候在三台服务器上分别运行(如果需要挂载多块可以运行多个osd):

> docker run -d \--net=host \--name=osd \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \-v /dev/:/dev/ \--privileged=true \-e OSD_FORCE_ZAP=1 \-e OSD_DEVICE=/dev/vdb \ceph/daemon osd_ceph_disk

此时我们查看发现osd3个节点就可以看到已经上线了:

>  docker exec mon ceph -scluster:id:     da8f7f5b-b767-4420-a510-287f4ced25dehealth: HEALTH_WARNno active mgrservices:mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3mgr: no daemons activeosd: 3 osds: 3 up, 3 indata:pools:   0 pools, 0 pgsobjects: 0  objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:     

但是这个时候我们还看不到存储空间,这是因为mgr没有启动,我们把mds和rgw也一起跑起来在node1节点上:

> docker run -d \--net=host \--name=mgr \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \ceph/daemon mgr> docker run -d \--net=host \--name=mds \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \-e CEPHFS_CREATE=1 \ceph/daemon mds     
> docker run -d \--name=rgw \-p 80:80 \-v /etc/ceph:/etc/ceph \-v /var/lib/ceph/:/var/lib/ceph/ \ceph/daemon rgw        

这个时候就可以看到初始化完成了:

>  docker exec mon ceph -scluster:id:     da8f7f5b-b767-4420-a510-287f4ced25dehealth: HEALTH_OKservices:mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3mgr: ceph-1(active)mds: cephfs-1/1/1 up  {0=ceph-1=up:active}osd: 3 osds: 3 up, 3 inrgw: 1 daemon activedata:pools:   6 pools, 48 pgsobjects: 209  objects, 3.4 KiBusage:   6.0 GiB used, 292 GiB / 298 GiB availpgs:     48 active+clean

使用Ceph

我们可以使用ceph挂载磁盘进行使用,但是ceph有很强的用户校验机制所以这里需要先拿到访问key ,而且在使用过程中可以指定多个节点形成负载均衡,然后用内核驱动挂载 Ceph 文件系统 — Ceph Documentation.

> mkdir /mnt/cephfile
> cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]key = AQBXv0VbKtikExAAwHHp+F2HJSnYIIqaozjt3g==auid = 0caps mds = "allow"caps mgr = "allow *"caps mon = "allow *"caps osd = "allow *"mount -t ceph 120.92.172.35,120.92.169.191,120.92.165.229:/ /mnt/cephfile -o name=admin,secret=AQBhlz1bZBHcLxAAt6eIyBxnAxFoyA7PDTqAkQ==
umount /mnt/cephfile>  lsof  /mnt/cephfile
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF          NODE NAME
bash    10356 root  cwd    DIR    0,0        2 1099511627781 /mnt/cephfile/data/dev/code

这是最简单的使用,还有关于rdb对象存储以及Ceph还有快照等功能,可以在搭建好整个集群之后进行测试文件速度(这里主要测试的是5000多个小文件拷贝速度)如下:

# NAS盘
>  time cp -rf php/ general/test
real    2m 7.05s
user    0m 0.13s
sys     0m 1.80s# CEPH
> time cp -rf php/ generalceph/test
real    0m 6.88s
user    0m 0.05s
sys     0m 0.39s# 本地磁盘
> time cp -rf php/ php2
real    0m 1.16s
user    0m 0.02s
sys     0m 0.21s

通过对比可以看到CEPH的速度对于NAS盘提升有很多,面对本地磁盘差距也不是很大.

Ceph在kubernetes集群中的使用

在kubernetes集群中可以使用ceph作为高速共享盘,这样可以提高我们的自动化部署更新代码的速度,同时节省更新的时间.

由于kubernetes支持cephFS文件挂载,所以我们只需要用yaml编排文件处理就好,由于使用ceph需要密码所以我们先创建一个secret类型的yaml:

apiVersion: v1
kind: Secret
metadata:name: ceph-secretnamespace: dev
data:key: QVFCMTZWMVZvRjVtRXhBQTVrQ1FzN2JCajhWVUxSdzI2Qzg0SEE9PQ==

然后创建我们需要的volume挂载卷就可以在Pod中正常使用了.

apiVersion: v1
kind: PersistentVolume
metadata:name: cephfs-pv
spec:capacity:storage: 200GiaccessModes:- ReadWriteManycephfs:monitors:- 120.92.172.35:6789- 120.92.169.191:6789- 120.92.165.229:6789user: adminsecretRef:name: ceph-secretreadOnly: falsestorageClassName: cephpersistentVolumeReclaimPolicy: Recycle
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: cephfs-pv-claim
spec:accessModes:- ReadWriteManyresources:requests:storage: 100GistorageClassName: ceph
http://www.yayakq.cn/news/642387/

相关文章:

  • 手机建立网站application医院网页
  • 建网站难吗?网站建设原理与实践
  • 安徽省建设干校网站郑州市的实惠推广网站
  • 烟台网站建设价格wordpress数据库表前缀
  • 网站设计的书网站建设多少钱一个月
  • 关于做ppt的网站有哪些内容吗东莞互联网营销网站建设
  • 河南省做网站的公司有哪些safari浏览器
  • 做外单要上什么网站asp网页编辑器
  • 网站推广的实际案例苏州代理记账
  • 深圳做网页的网站seo服务器选择
  • 电商网站首页模板wordpress离线文章发布
  • asp.net网站后台源码微博同步到wordpress
  • 如何搜索asp网站百度空间导出wordpress
  • 哪家做网站的公司旅游网站制作方案
  • 那个网站教做冰鲜鱼凤岗做网站
  • 中山网站建设公司哪个好成都seo优化公司排名
  • 企业邮箱 网站建设舟山网站设计
  • 在那些网站做宣传更好大连网站关键词推广
  • 地图网站 源码快速制作app软件
  • 中山网站建设公司哪家好张家港设计公司
  • 公司企业网站制作个人博客网站教程
  • 全屏背景网站如何做到自适应长春火车站是哪个站
  • 开什么网站暴利中国建设协会网站首页
  • 如何在淘宝上做自己的网站陕西省建设厅的网站
  • 安徽鑫华建设有限公司网站上海做网站较好的公司
  • wordpress 价格网站优化是什么
  • 怎么建设自己网站外网无法访问大连模版网站
  • 盘锦市网站建设企业官方网站建设方案
  • 嘉峪关市建设局公示公告网站个人网页首页内容
  • 长沙教育类网站建设效果好的网站制作公司