Portworx安装和使用

网友投稿 303 2022-10-21

Portworx安装和使用

Portworx安装和使用

Portworx介绍

Portworx是一家美国存储初创公司,它研发了业界第一个容器定义存储系统Portworx。Portworx提供了全新的、统一的Scale out存储栈,其核心架构是共享的、松耦合的、分布式、基于元数据的块存储层(卷、块设备、全局共享卷和文件访问等)。portworx本身作为容器服务的方式部署,在每个集群节点呈现为PX的容器。

容器的数据卷简单可以分为:本地存储、共享存储;使用本地数据卷存储,当该卷所在的机器出现故障,严重可导致数据永远丢失。Portworx (px-dev)在各个节点上保存多份备份,可以很好解决上面的问题,并可以把各个服务器上的磁盘充分利用起来组成一个存储池。

它使用Gossip Protocol的通信方式类似流言传播,每个节点状态的变化和更新,立即通过一传十,十传百的方式在集群内广播,而不是由某几个节点逐一传递,所以通信效率非常高效。

一、环境准备

准备3个虚拟机,并额外为每个虚拟机添加一个虚拟8G的磁盘(sdb)

a.master private:10.2.22.11 b.node1 private:10.2.22.12 c.node2 private:10.2.22.13

二、准备etcd,在master机器上

//需要服务发现工具 etcd 或 consul 下载 $ wget //解压 $ tar -xzvf etcd-v3.0.14-linux-amd64.tar.gz //启动服务 $ cd etcd-v3.0.14-linux-amd64 $ ./etcd --name infra0 --initial-advertise-peer-urls --listen-peer-urls --listen-client-urls --advertise-client-urls --initial-cluster-token etcd-cluster-1 --initial-cluster infra0= --initial-cluster-state new

三、运行portworx容器

//检查存储设备: sdb磁盘 $ lsblk //创建配置文件目录: $ mkdir -p /etc/pwx //下载样例文件: $ wget https://raw.githubusercontent.com/portworx/px-dev/master/conf/config.json $ cp -p config.json /etc/pwx //修改config.json $ vim /etc/pwx/config.json { "clusterid": "5ac2ed6f-7e4e-4e1d-8e8c-3a6df1fb61a5", "kvdb": [ "etcd:http://10.2.22.11:2379" ], "storage": { "devices": [ "/dev/sdb" ] } } //clusterid 集群的id,每台都一样 // /dev/sdb 上面lsblk 列出的磁盘 //运行portworx容器:(注意需要开放一些端口,具体看日志) $ docker pull portworx/px-dev $ docker run --restart=always --name px -d --net=host \ --privileged=true \ -v /run/docker/plugins:/run/docker/plugins \ -v /var/lib/osd:/var/lib/osd:shared \ -v /dev:/dev \ -v /etc/pwx:/etc/pwx \ -v /opt/pwx/bin:/export_bin:shared \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/cores:/var/cores \ -v /usr/src:/usr/src \ --ipc=host \ portworx/px-dev $ docker logs px -f 查看日志 //查看状态 $ /opt/pwx/bin/pxctl status //Status: PX is operational 说明成功

另为两台以同样方式启动

//docker-compose运行容器 $ git clone https://github.com/portworx/px-dev.git $ cd px-dev/quick-start $ docker-compose run portworx -daemon -k etcd:-c 5ac2ed6f-7e4e-4e1d-8e8c-3a6df1fb61a5 -s /dev/sdb

四、数据共享

//创建卷, 以pxd驱动类型 $ docker volume create -d pxd --name=redis_vol --opt fs=ext4 --opt size=1G //查看卷 $ /opt/pwx/bin/pxctl volume list //在node1上启动redis 开启数据持久化 $ docker run --name some-redis -v redis_vol:/data --volume-driver=pxd -d redis redis-server --appendonly yes //启动redis客户端 $ docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379 //写入数据 $ redis:6379> set foo abcd $ redis:6379> get foo "abcd" //停止redis $ docker kill some-redis //在node2上启动redis $ docker run --name other-redis -v redis_vol:/data --volume-driver=pxd -d redis redis-server --appendonly yes //启动redis客户端 并进入 $ docker run -it --link other-redis:redis --rm redis redis-cli -h redis -p 6379 //查看数据,还存在 $redis:6379> get foo "abcd" //创建一个卷的快照 //查看卷 $ /opt/pwx/bin/pxctl volume list //根据redis_vol卷的ID 创建一个快照 $ /opt/pwx/bin/pxctl snap create 1013827046371938942 //生成了一个卷的快照ID Volume successfully snapped: 889729860013179865 //备份好快照后,改一下数据 $ docker run -it --link other-redis:redis --rm redis redis-cli -h redis -p 6379 $ redis:6379> get foo "abcd" $ redis:6379> set foo foobar OK $ redis:6379> get foo "foobar" //启动redis server 指定备份的卷ID $ docker run --name snap-redis -v 889729860013179865:/data --volume-driver=pxd -d redis redis-server --appendonly yes $ docker run -it --link snap-redis:redis --rm redis redis-cli -h redis -p 6379 $ redis:6379> get foo "abcd" 得到的数据,是当时备份的值

五、增加删除替换磁盘

//为了向节点添加更多的存储,该节点必须处于维护模式 //显示系统中的驱动器列表 $ /opt/pwx/bin/pxctl service drive show //进入维护模式 $ /opt/pwx/bin/pxctl service maintenance --enter 输入Y //或 $ /opt/pwx/bin/pxctl service maintenance --enter -y //增加磁盘 $ /opt/pwx/bin/pxctl service drive add /dev/sdc //将sde替换成sdc $ /opt/pwx/bin/pxctl service drive replace --source /dev/sde --target /dev/sdc --operation start //退出维护模式 $ /opt/pwx/bin/pxctl service maintenance --exit

六、常用命令

//显示集群中的卷 $ /opt/pwx/bin/pxctl volume list //查看本地卷 $ docker volume ls //删除卷 /opt/pwx/bin/pxctl volume delete 卷名或ID //修改属性 $ /opt/pwx/bin/pxctl volume update redis_vol --shared=on $ /opt/pwx/bin/pxctl volume update redis_vol --scale=10 //查看卷信息 $/opt/pwx/bin/pxctl volume inspect redis_vol //当有个节点挂掉了,但是它占用了集群中的卷,在另一台正常机器上 用此命令分离卷 $ /opt/pwx/bin/pxctl host attach 845707146523643463(ID) 连接 $ /opt/pwx/bin/pxctl host detach 845707146523643463 分离 //显示状态 $ /opt/pwx/bin/pxctl status //显示集群节点 $ /opt/pwx/bin/pxctl cluster list //删除脱机节点 $ /opt/pwx/bin/pxctl cluster delete a56a4821-6f17-474d-b2c0-3e2b01cd0bc3

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot集成Redis—使用RedisRepositories详解
下一篇:#yyds干货盘点#Docker常用命令速记
相关文章

 发表评论

暂时没有评论,来抢沙发吧~