OpenNebula 4.10入门之安装和节点配置
环境说明:
所有系统环境管理端和节点宿主机都采用CentOS 6.6 x86_64
服务器使用情况:
1. 控制节点和存储节点使用同一台服务器.
2. 计算节点分别使用两台服务器
系统约定:
cloud.webxury.com 192.168.15.100 (计算节点)
cloud1.webxury.com 192.168.15.101 (计算节点)
storage.webxury.com 192.168.15.200 (存储和控制)
系统最小化安装(略过),并且根据约定配置好IP地址,修改好计算机名,检查系统时间是否正确,确保机器能和外界通信,并且将以上内容添加到本地/etc/hosts文件内,确保域名解析正常,并且永久关闭SELINUX以及IPTABLES,并且重启,方可进行安装部署.因为是测试,所以暂时关闭,正式上线,需要添加需要权限以及防火墙的端口设定.
控制台安装篇
1. 为系统添加EPEL源,添加EPEL源的原因是因为要解决一些在安装上的依赖
yum –y install epel-release
2. 为系统添加Opennebula官方源
- # vi /etc/yum.repos.d/opennebula.repo
- [opennebula]
- name=opennebula
- baseurl=http://downloads.opennebula.org/repo/4.10/CentOS/6/x86_64/
- enabled=1
- gpgcheck=0
3. 生成源缓存(个人习惯)
yum makecache
4. 安装Opennebula控制台.
1.)# yum –y install opennebula-server opennebula-sunstone
安装完成之后创建如下用户以及目录文件:
- # grep oneadmin /etc/passwd
- oneadmin:x:9869:9869::/var/lib/one:/bin/bash
- # ls -ld /etc/one/ //OpenNebula相关配置文件所在目录
- drwxr-x---. 11 root oneadmin 4096 Feb 2 11:35 /etc/one/
- #ls/etc/init.d/opennebula*
- /etc/init.d/opennebula
- /etc/init.d/opennebula-occi
- /etc/init.d/opennebula-sunstone
- # ls -ld /var/log/one/
- drwxr-x---. 2 oneadmin oneadmin 4096 Feb 2 01:13 /var/log/one/
2).安装组件
- # /usr/share/one/install_gems
- lsb_release command not found. If you are using a RedHat based distribution install redhat-lsb Select your distribution or press enter to continue without installing dependencies.
- 0. CentOS/RedHat
- 1. Ubuntu/Debian
选择相对应的操作系统,我们选择0
5. 默认OpenNebula数据存储使用sqlite,如果需要使用MySQL,则需要做如下操作
1).安装mysql数据库
- yum –y install mysql mysql-server
- #service mysqld start
- #chkconfig mysqld on
并且设置MYSQL密码(忽略)
2).创建数据库
- $ mysql -u root -p
- Enter password:
- Welcome to the MySQL monitor. [...]
- mysql> GRANT ALL PRIVILEGES ON opennebula.* TO '用户名' IDENTIFIED BY '密码'; Query OK, 0 rows affected (0.00 sec)
3).设置隔离级别
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
6. 修改配置文件如下 [用户、端口、密码、库名和实际情况对应修改:
- # vi /etc/one/oned.conf
- … …
- #DB = [ backend = "sqlite" ] (记得把这行注销)
- # Sample configuration for
- DB = [ backend = "mysql",
- server = "localhost",
- port = 0, (这里0的意思代表使用MYSQL默认3306端口,所以不需要修改)
- user = "刚才设置的用户名",
- passwd = "刚才设置的密码",
- db_name = "opennebula" ]
- … …
7. 修改sunstone默认监听IP:
vi /etc/one/sunstone-server.conf
找到 :host: 127.0.0.1
修改成 :host: 0.0.0.0
8.启动相关服务
- # service opennebula start
- # service opennebula-sunstone start
- #chkconfig opennebula on
- #chkconfig opennebula-sunstone on
8.添加NFS共享存储目录
- vi /etc/exports
- /var/lib/one/ *(rw,sync,no_subtree_check,root_squash)
启动服务
- # service rpcbind restart
- # service nfs restart
- # chkconfig nfs on
- # chkconfig rpcbind on
9.添加SSH公共KEY
- # su - oneadmin
- $ vi ~/.ssh/config
添加以下内容
- Host *
- StrictHostKeyChecking no
- UserKnownHostsFile /dev/null
修改文件权限
- $ chmod 600 ~/.ssh/config
10.修改oneadmin密码
- #su oneadmin
- $passwd oneadmin
注:测试过程中因为测试环境服务端时间不对,导致cookie被忽略,OpenNebula Sunstone选择Keep me logged in一直登陆不上或者直接登陆很快退出,寻找原因花了很长时间,最后调整到正确时间,登陆显示ok。
P.S: 时间是一个非常容易被我们忽略的问题,切记切记!
完成以上步骤之后,浏览器登陆 http://ip:9869 即可
#p#
节点安装篇
系统约定:
cloud.webxury.com 192.168.15.100 (计算节点)
cloud1.webxury.com 192.168.15.101 (计算节点)
storage.webxury.com 192.168.15.200 (存储和控制)
系统最小化安装(略过),并且根据约定配置好IP地址,修改好计算机名,检查系统时间是否正确,确保机器能和外界通信,并且将以上内容添加到本地/etc/hosts文件内,确保域名解析正常,并且永久关闭SELINUX以及IPTABLES,并且重启,方可进行安装部署.因为是测试,所以暂时关闭,正式上线,需要添加需要权限以及防火墙的端口设定.
安装篇
1.为系统添加EPEL源,添加EPEL源的原因是因为要解决一些在安装上的依赖
yum –y install epel-release
2.为系统添加Opennebula官方源
- # vi /etc/yum.repos.d/opennebula.repo
- [opennebula]
- name=opennebula
- baseurl=http://downloads.opennebula.org/repo/4.10/CentOS/6/x86_64/
- enabled=1
- gpgcheck=0
3.生成源缓存(个人习惯)
yum makecache
4.安装节点组件
yum –y install opennebula-node-kvm
启动相关服务
- # service messagebus start
- # service libvirtd start
- # chkconfig messagebus on
- # chkconfig libvirtd on
5.给系统网卡做桥接
首先先复制一份ifcfg-eth0的文件,重命名为ifcfg-br0
网卡路径: /etc/sysconfig/network-scripts/ifcfg-eth0
拷贝一份eth0,并且重命名为br0
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
修改网卡文件eth0
- DEVICE=eth0
- BOOTPROTO=none
- NM_CONTROLLED=no
- ONBOOT=yes
- TYPE=Ethernet
- BRIDGE=br0
修改刚才拷贝的ifcfg-br0文件
- DEVICE=br0(记得修改网卡名称,因为是复制过来的)
- TYPE=Bridge
- IPADDR=192.168.15.100
- NETMASK=255.255.255.0
- GATEWAY=192.168.15.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
- ONBOOT=yes
- BOOTPROTO=static
- NM_CONTROLLED=no
重启网卡
- # service network restart
6. 挂载存储的NFS共享目录
编辑: /etc/fstab
添加以下内容
192.168.15.200:/var/lib/one /var/lib/one/ nfs soft,intr,rsize=8192,wsize=8192,noauto
7. 修改oneadmin密码
#passwd oneadmin
回到控制节点服务器,让SSH无密码登陆节点服务器,否则控制节点添加计算节点将会失败
- [oneadmin@storage ~]# su oneadmin
- [oneadmin@storage ~]$ ssh-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/var/lib/one/.ssh/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /var/lib/one/.ssh/id_rsa.
- Your public key has been saved in /var/lib/one/.ssh/id_rsa.pub.
- 一路回车直到结束
- [oneadmin@storage~]$ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub oneadmin@cloud.webxury.com
- oneadmin@cloud.webxury.com 's password:
- .ssh/authorized_keys
根据提示输入密码后,已经成功登陆节点服务器,然后退出,尝试再次从控制节点服务器,ssh进入节点服务器,已经是不需要密码了,说明设置成功,然后退出,并且重启服务器,服务器启动后,请检查是否挂载成功.
注:挂载的时候我遇到一个问题,我把storage挂载到每一个节点下的/var/lib/one/目录下,发现权限已经改变,默认权限所属用户组和用户名都是oneadmin,但是挂在后发现用户名密码都是nobody,所以我们要修改/etc/idmapd.conf这个文件,把Nobody-User=XXX修改成oneadmin,Nobody-Group=XXX也同样修改成oneadmin,并且重启服务,service rpcidmapd restart.
安装教程基本完成,可以简单做测试,现在我们打开UI界面.
#p#
现在我们开始创建集群.
现在我们开始添加节点服务器,记得将节点添加到集群选项里面,看操作.
节点添加完成,我们现在开始添加网络.请看操作.
网络添加完成了,请记得把网络添加到集群里面,否则会出现错误.
#p#
最后,我们检查集群,将存储添加进去,然后检查一遍,是否全部正确.
现在看到集群里面,有2个计算节点,一个虚拟网络,3个存储.这个是正确的.
现在我们导入官方的一个模板和镜像文件做测试.
经过几分钟,已经成功导入,导入的时间,是根据网络而定,因为要下载回来,所以是需要时间的.
#p#
导入镜像的时候,它配有一个模板文件,我们稍微拿来改动一下就可以使用,下面看我操作.
接下来我们可以创建虚拟机来测试一下.
现在看见虚拟机可以运行了.但是有一个地方需要注意和修改,不然虚拟机一直会停留在等待,而不会运行.
用SSH 进入控制台的主机,找到/etc/sched.conf这个文件,找到调度配置文件,以下请根据自己需求去修改.
- DEFAULT_SCHED: Definition of the default scheduling algorithm
- # - policy:
- # 0 = Packing. Heuristic that minimizes the number of hosts in use by
- # packing the VMs in the hosts to reduce VM fragmentation
- # 1 = Striping. Heuristic that tries to maximize resources available for
- # the VMs by spreading the VMs in the hosts
- # 2 = Load-aware. Heuristic that tries to maximize resources available for
- # the VMs by using those nodes with less load
- # 3 = Custom.
- # - rank: Custom arithmetic exprission to rank suitable hosts based in their
- # attributes
- # 4 = Fixed. Hosts will be ranked according to the PRIORITY attribute found
- # in the Host or Cluster template.
- #
- # DEFAULT_DS_SCHED: Definition of the default storage scheduling algorithm
- # - policy:
- # 0 = Packing. Tries to optimize storage usage by selecting the DS with
- # less free space
- # 1 = Striping. Tries to optimize I/O by distributing the VMs across
- # datastores.
- # 2 = Custom.
- # - rank: Custom arithmetic exprission to rank suitable datastores based on
- # their attributes
- # 3 = Fixed. Datastores will be ranked according to the PRIORITY attribute
- # found in the Datastore template.
- 这个是调度的说明,我用的是2和3的调度机制
- DEFAULT_SCHED = [
- policy = 2
- ]
- DEFAULT_DS_SCHED = [
- policy = 3
- ]
请根据自己需求去修改.
下面是修改高可用配置.实现其中一台计算节点服务器宕机后,另外一个计算节点自动接管
编辑/etc/one/oned.conf文件,找到
- HOST_HOOK = [
- name = "error",
- on = "ERROR",
- command = "ft/host_error.rb",
- arguments = "$ID -m -p 1",(原来这里的1是5,我改成了1,是因为检测时间为5分钟,我改成了1分钟,1分钟后计算节点还在宕机,另外一台则自动接管)
- remote = "no" ]
- VM_HOOK = [
- name = "advanced_hook",
- on = "CUSTOM",
- state = "ACTIVE",
- lcm_state = "BOOT_UNKNOWN",
- command = "log.rb",
- arguments = "$ID $PREV_STATE $PREV_LCM_STATE" ]
#p#
#号去掉,然后重启服务.
1分钟后,另外一台主机自动接管了,虚拟机恢复正常,可以根据自己的需求来修改钩子触发的配置文件,来达到高可用目的.
本文转自KVM虚拟化实践微信公众号,特此感谢。 |