gtxyzz

把Sheepdog装进OpenStack

gtxyzz 运维技术 2022-11-21 632浏览 0

现在网上有关Sheepdog使用方面的资料还是少一些,本文主要介绍sheepdog的安装、简单使用方法,以及怎样与OpenStack集成。

编译安装

Sheepdog提供源码包(tarball)下载,同样能够安装使用。不过,发布工作需要制作deb安装包,而tarball制作安装包时有个地方引用了git log命令,由于tarball源码所在目录不是git仓库而导致出错,所以,***还是通过git获取sheepdog的源码:

mkdir-pdownload
cddownload/
gitclonehttps://github.com/sheepdog/sheepdog.gitsheepdog-github

切换到***稳定版0.7.6:

cdsheepdog-github/
gitcheckoutv0.7.6

执行autogen.sh生成configure,在此之前,可能需要安装依赖:

sudoapt-getinstallautoconflibtoolmakepkg-config
./autogen.sh

正式编译,sheepdog本身依赖于corosync、zookeeper等集群管理工具,如果制作deb包,还依赖于debian的一些工具:

sudoapt-getinstallliburcu-devcorosynccorosync-dev\
zookeeperzookeeperdlibzookeeper-mt-dev
./configure--enable-zookeeper
sudoapt-getinstalldebhelperdh-autoreconfdevscripts
makedeb

生成的安装包在上一层目录,执行安装:

cd..
sudodpkg-isheepdog_0.7.6-1_amd64.deb

完成后,重新登录会遇到以下错误:

Lastlogin:TueDec3114:57:102013fromnetwork
-bash:script/bash_completion_dog:Nosuchfileordirectory
-bash:script/bash_completion_dog:Nosuchfileordirectory

这是因为0.7.6源码中一个过时的文件没有清理,可以在安装之后清理:

sudorm-f/etc/bash_completion.d/sheepdog

或者make deb之前清理:

rm-fdebian/sheepdog.bash-completion

两者唯一区别是后者执行sheep -v查看版本时,会发现版本字符串后面加上dirty标识。

如果把sheepdog_0.7.6-1_amd64.deb拷贝到其它机器安装,可能需要安装依赖:

sudoapt-getinstallzookeeperdlibcfg4libcpg4\
libzookeeper-mt2libcoroipcc4

某些Ubuntu源可能找不到libcfg4和libcoroipcc4,可以修改源或者到http://packages.ubuntu.com/下载


配置zookeeper

一般正式环境使用zookeeper作为sheepdog集群的管理工具,需要相关配置。如果只是单节点试用,可以不配置zookeeper。

首先修改myid文件,保证每个zookeeper节点的myid都不一样,文件内容是1-255之间的数字:

sudovi/etc/zookeeper/conf/myid

然后修改zoo.cfg文件,主要填写各个zookeeper节点的信息:

sudovi/etc/zookeeper/conf/zoo.cfg

修改内容如下所示,格式为server.myid=host:port1:port2

server.11=sd1:2888:3888
server.12=sd2:2888:3888
server.13=sd3:2888:3888
server.14=sd4:2888:3888
server.15=sd5:2888:3888

上面表示zookeeper节点共有5个,最多允许2台节点挂掉,剩余3台还能保持一个多数派。

启动服务,apt-get时已启动,所以需要restart。

sudoservicezookeeperrestart

启动sheepdog

建立工作目录并赋予权限,仅作为例子,创建磁盘分区等细节不再赘述。如果以非root用户使用sheepdog,例如sheepdog用户,记得赋予相应目录的权限。

sudomkdir/mnt/sheepdog
sudomount-text4-onoatime,barrier=0,user_xattr,data=writeback/dev/sda4/mnt/sheepdog
sudochown-Rsheepdog:sheepdog/mnt/sheepdog

简单启动sheepdog

sheep/mnt/sheepdog\
-czookeeper:sd1:2181,sd2:2181,sd3:2181,sd4:2181,sd5:2181

使用对象缓存

事先挂载SSD到/mnt/cache,以下启动命令为所在的sheepdog节点分配约256G的对象缓存。注意有的版本不认size=256G,要写成size=256000。

sheep-wsize=256000,dir=/mnt/cache,directio/mnt/sheepdog\
-czookeeper:sd1:2181,sd2:2181,sd3:2181,sd4:2181,sd5:2181

如需要,创建开机启动

Sheepdog安装时会在/etc/init.d目录创建sheepdog服务脚本,不过目前并不完善,***还是把上面的sheepdog启动命令放到/etc/rc.local文件。


常用sheepdog及qemu命令

格式化sheepdog集群

如果单节点试用一下功能,副本数设置为1(–copies==1)即可。

$dogclusterformat--copies=3
usingbackendplainstore

查看sheepdog集群

$dogclusterinfo
Clusterstatus:running,auto-recoveryenabled
ClustercreatedatTueDec3117:40:292013
EpochTimeVersion
2013-12-3117:40:291[10.1.48.44:7000,192.168.1.2:7000,192.168.1.3:7000,192.168.1.4:7000,192.168.1.5:7000]

查看sheepdog节点

$dognodeinfo
IdSizeUsedAvailUse%
0139GB0.0MB139GB0%
1139GB0.0MB139GB0%
2139GB0.0MB139GB0%
3435GB0.0MB435GB0%
4217GB0.0MB217GB0%
Total1.0TB0.0MB1.0TB0%
Totalvirtualimagesize0.0MB

导入一个镜像到sheepdog

$qemu-imgconvert-tdirectsyncmint15.imgsheepdog:mint

查看sheepdog镜像列表

$dogvdilist
NameIdSizeUsedSharedCreationtimeVDIidCopiesTag
mint016GB4.1GB0.0MB2013-12-3117:508ec5193

再次查看sheepdog节点

$dognodeinfo
IdSizeUsedAvailUse%
0139GB1.8GB137GB1%
1139GB1.9GB137GB1%
2139GB2.2GB137GB1%
3435GB3.7GB431GB0%
4217GB2.7GB215GB1%
Total1.0TB12GB1.0TB1%
Totalvirtualimagesize16GB

创建一个空的sheepdog镜像

$dogvdicreatedata100G

再次查看sheepdog镜像列表

$dogvdilist
NameIdSizeUsedSharedCreationtimeVDIidCopiesTag
mint016GB4.1GB0.0MB2013-12-3117:508ec5193
data0100GB0.0MB0.0MB2013-12-3118:05a34a053

启动虚拟机

如果使用对象缓存,默认的缓存方式有的说是writeback,有的说是writethrough,所以建议写上cache=writeback,以显式区分。

$sudoqemu-system-x86_64--enable-kvm-m4096-smp2\
-drivefile=sheepdog:mint,if=virtio,index=0,cache=writeback\
-drivefile=sheepdog:data,if=virtio,index=1,cache=writeback\
-netnic,model=virtio-netuser-vnc:1-daemonize

如需要,建立端口映射

如果在局域网内部启动虚拟机,外部不能访问,可以在跳板机建立端口映射

$sudoiptables-tnat-APREROUTING-d10.1.48.44-ptcp\
--dport25901-jDNAT--to192.168.1.2:5901
$sudoiptables-tnat-APOSTROUTING-jMASQUERADE

这样,外部网络的机器就可以使用vncviewer连上虚拟机

$vncviewer10.1.48.44:25901

与OpenStack集成

Cinder存储服务

Sheepdog可以作为Cinder服务的后端存储。一般只需要修改/etc/cinder/cinder.conf文件,在DEFAULT一节中,修改volume_driver参数为sheepdog的cinder驱动:

volume_driver=cinder.volume.drivers.sheepdog.SheepdogDriver

修改之后,重启cinder-volume服务即可。

如果开发者使用devstack,可以修改devstack的localrc文件,设置CINDER_DRIVER环境变量为sheepdog,修改之后,执行./stack.sh即可。

Glance镜像服务

Sheepdog也可以作为Glance服务的后端存储。通常是修改/etc/glance/glance-api.conf文件,在DEFAULT一节,加入或者修改对接sheepdog的相应参数:

default_store=sheepdog
known_stores=glance.store.sheepdog.Store
sheepdog_store_address=10.1.48.44
sheepdog_store_port=7000
sheepdog_store_chunk_size=64

修改之后,重启glance-api服务即可。

如果开发者使用devstack,目前还没有相应的快捷设置对接sheepdog方法,可参考上面修改配置文件,然后重启服务。

继续浏览有关 OpenStack 的文章
发表评论