重磅图文详解:OpenNebula安装和节点配置实战

  1. 云栖社区>
  2. 博客>
  3. 正文

重磅图文详解:OpenNebula安装和节点配置实战

晚来风急 2017-08-02 13:50:00 浏览2439
展开阅读全文

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官方源


  1. # vi /etc/yum.repos.d/opennebula.repo 
  2.  
  3. [opennebula] 
  4.  
  5. name=opennebula 
  6.  
  7. baseurl=http://downloads.opennebula.org/repo/4.10/CentOS/6/x86_64/ 
  8.  
  9. enabled=1 
  10.  
  11. gpgcheck=0 

3. 生成源缓存(个人习惯)

yum makecache

4. 安装Opennebula控制台.

1.)# yum –y install opennebula-server opennebula-sunstone

安装完成之后创建如下用户以及目录文件:


  1. # grep oneadmin /etc/passwd 
  2. oneadmin:x:9869:9869::/var/lib/one:/bin/bash 
  3. # ls -ld /etc/one/ //OpenNebula相关配置文件所在目录  
  4. drwxr-x---. 11 root oneadmin 4096 Feb 2 11:35 /etc/one/ 
  5. #ls/etc/init.d/opennebula*  
  6. /etc/init.d/opennebula  
  7. /etc/init.d/opennebula-occi 
  8. /etc/init.d/opennebula-sunstone 
  9. # ls -ld /var/log/one/ 
  10. drwxr-x---. 2 oneadmin oneadmin 4096 Feb 2 01:13 /var/log/one/ 

2).安装组件


  1. # /usr/share/one/install_gems 
  2.  
  3. 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. 
  4.  
  5. 0. CentOS/RedHat 
  6.  
  7. 1. Ubuntu/Debian 

选择相对应的操作系统,我们选择0

5. 默认OpenNebula数据存储使用sqlite,如果需要使用MySQL,则需要做如下操作

1).安装mysql数据库


  1. yum –y install mysql mysql-server 
  2.  
  3. #service mysqld start 
  4.  
  5. #chkconfig mysqld on 

并且设置MYSQL密码(忽略)

2).创建数据库


  1. $ mysql -u root -p 
  2.  
  3. Enter password: 
  4.  
  5. Welcome to the MySQL monitor. [...] 
  6.  
  7. 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. 修改配置文件如下 [用户、端口、密码、库名和实际情况对应修改:


  1. # vi /etc/one/oned.conf 
  2. … …
  3. #DB = [ backend = "sqlite" ] (记得把这行注销) 
  4. # Sample configuration for  
  5. DB = [ backend = "mysql" 
  6. server = "localhost"
  7. port = 0, (这里0的意思代表使用MYSQL默认3306端口,所以不需要修改)  
  8. user = "刚才设置的用户名" 
  9. passwd = "刚才设置的密码" 
  10. db_name = "opennebula" ] 
  11. … … 

7. 修改sunstone默认监听IP:

vi /etc/one/sunstone-server.conf

找到 :host: 127.0.0.1

修改成 :host: 0.0.0.0

8.启动相关服务


  1. # service opennebula start  
  2. # service opennebula-sunstone start  
  3. #chkconfig opennebula on 
  4. #chkconfig opennebula-sunstone on 

8.添加NFS共享存储目录


  1. vi /etc/exports  
  2. /var/lib/one/ *(rw,sync,no_subtree_check,root_squash) 

启动服务


  1. # service rpcbind restart 
  2. # service nfs restart  
  3. # chkconfig nfs on 
  4.  
  5. # chkconfig rpcbind on 

9.添加SSH公共KEY


  1. # su - oneadmin 
  2.  
  3. $ vi ~/.ssh/config 

添加以下内容


  1. Host * 
  2.  
  3. StrictHostKeyChecking no 
  4.  
  5. UserKnownHostsFile /dev/null 

修改文件权限


  1. $ chmod 600 ~/.ssh/config 

10.修改oneadmin密码


  1. #su oneadmin 
  2.  
  3. $passwd oneadmin 

:测试过程中因为测试环境服务端时间不对,导致cookie被忽略,OpenNebula Sunstone选择Keep me logged in一直登陆不上或者直接登陆很快退出,寻找原因花了很长时间,最后调整到正确时间,登陆显示ok。

P.S: 时间是一个非常容易被我们忽略的问题,切记切记!

完成以上步骤之后,浏览器登陆 http://ip:9869 即可

节点安装篇

系统约定:

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官方源


  1. # vi /etc/yum.repos.d/opennebula.repo 
  2.  
  3. [opennebula] 
  4.  
  5. name=opennebula 
  6.  
  7. baseurl=http://downloads.opennebula.org/repo/4.10/CentOS/6/x86_64/ 
  8.  
  9. enabled=1 
  10.  
  11. gpgcheck=0 

3.生成源缓存(个人习惯)

yum makecache

4.安装节点组件

yum –y install opennebula-node-kvm

启动相关服务


  1. # service messagebus start 
  2. # service libvirtd start 
  3. # chkconfig messagebus on 
  4. # 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


  1. DEVICE=eth0  
  2. BOOTPROTO=none  
  3. NM_CONTROLLED=no  
  4. ONBOOT=yes  
  5. TYPE=Ethernet 
  6. BRIDGE=br0 

修改刚才拷贝的ifcfg-br0文件


  1. DEVICE=br0(记得修改网卡名称,因为是复制过来的) 
  2. TYPE=Bridge 
  3. IPADDR=192.168.15.100  
  4. NETMASK=255.255.255.0  
  5. GATEWAY=192.168.15.1  
  6. DNS1=8.8.8.8  
  7. DNS2=8.8.4.4 
  8. ONBOOT=yes  
  9. BOOTPROTO=static 
  10. NM_CONTROLLED=no 

重启网卡


  1. # 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无密码登陆节点服务器,否则控制节点添加计算节点将会失败


  1. [oneadmin@storage ~]# su oneadmin  
  2. [oneadmin@storage ~]$ ssh-keygen  
  3. Generating public/private rsa key pair.  
  4. Enter file in which to save the key (/var/lib/one/.ssh/id_rsa): 
  5. Enter passphrase (empty for no passphrase):  
  6. Enter same passphrase again:  
  7. Your identification has been saved in /var/lib/one/.ssh/id_rsa. 
  8. Your public key has been saved in /var/lib/one/.ssh/id_rsa.pub. 
  9. 一路回车直到结束  
  10. [oneadmin@storage~]$ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub oneadmin@cloud.webxury.com 
  11. oneadmin@cloud.webxury.com 's password:  
  12. .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界面.

重磅长文:OpenNebula安装和节点配置实战


现在我们开始创建集群.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

现在我们开始添加节点服务器,记得将节点添加到集群选项里面,看操作.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

节点添加完成,我们现在开始添加网络.请看操作.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

网络添加完成了,请记得把网络添加到集群里面,否则会出现错误.

最后,我们检查集群,将存储添加进去,然后检查一遍,是否全部正确.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

现在看到集群里面,有2个计算节点,一个虚拟网络,3个存储.这个是正确的.

现在我们导入官方的一个模板和镜像文件做测试.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

经过几分钟,已经成功导入,导入的时间,是根据网络而定,因为要下载回来,所以是需要时间的.

导入镜像的时候,它配有一个模板文件,我们稍微拿来改动一下就可以使用,下面看我操作.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战

接下来我们可以创建虚拟机来测试一下.

重磅长文:OpenNebula安装和节点配置实战

重磅长文:OpenNebula安装和节点配置实战


现在看见虚拟机可以运行了.但是有一个地方需要注意和修改,不然虚拟机一直会停留在等待,而不会运行.

用SSH 进入控制台的主机,找到/etc/sched.conf这个文件,找到调度配置文件,以下请根据自己需求去修改.


  1. DEFAULT_SCHED: Definition of the default scheduling algorithm 
  2.  
  3. # - policy: 
  4.  
  5. # 0 = Packing. Heuristic that minimizes the number of hosts in use by 
  6.  
  7. # packing the VMs in the hosts to reduce VM fragmentation 
  8.  
  9. # 1 = Striping. Heuristic that tries to maximize resources available for 
  10.  
  11. # the VMs by spreading the VMs in the hosts 
  12.  
  13. # 2 = Load-aware. Heuristic that tries to maximize resources available for 
  14.  
  15. # the VMs by using those nodes with less load 
  16.  
  17. # 3 = Custom. 
  18.  
  19. # - rank: Custom arithmetic exprission to rank suitable hosts based in their 
  20.  
  21. # attributes 
  22.  
  23. # 4 = Fixed. Hosts will be ranked according to the PRIORITY attribute found 
  24.  
  25. # in the Host or Cluster template. 
  26.  
  27. # 
  28.  
  29. # DEFAULT_DS_SCHED: Definition of the default storage scheduling algorithm 
  30.  
  31. # - policy: 
  32.  
  33. # 0 = Packing. Tries to optimize storage usage by selecting the DS with 
  34.  
  35. # less free space 
  36.  
  37. # 1 = Striping. Tries to optimize I/O by distributing the VMs across 
  38.  
  39. # datastores. 
  40.  
  41. # 2 = Custom. 
  42.  
  43. # - rank: Custom arithmetic exprission to rank suitable datastores based on 
  44.  
  45. # their attributes 
  46.  
  47. # 3 = Fixed. Datastores will be ranked according to the PRIORITY attribute 
  48.  
  49. # found in the Datastore template. 
  50.  
  51. 这个是调度的说明,我用的是2和3的调度机制 
  52.  
  53. DEFAULT_SCHED = [ 
  54.  
  55. policy = 2 
  56.  
  57.  
  58. DEFAULT_DS_SCHED = [ 
  59.  
  60. policy = 3 
  61.  

请根据自己需求去修改.

下面是修改高可用配置.实现其中一台计算节点服务器宕机后,另外一个计算节点自动接管

编辑/etc/one/oned.conf文件,找到


  1. HOST_HOOK = [ 
  2.  
  3. name = "error"
  4.  
  5. on = "ERROR"
  6.  
  7. command = "ft/host_error.rb"
  8.  
  9. arguments = "$ID -m -p 1",(原来这里的1是5,我改成了1,是因为检测时间为5分钟,我改成了1分钟,1分钟后计算节点还在宕机,另外一台则自动接管) 
  10.  
  11. remote = "no" ] 
  12.  
  13. VM_HOOK = [ 
  14.  
  15. name = "advanced_hook"
  16.  
  17. on = "CUSTOM"
  18.  
  19. state = "ACTIVE"
  20.  
  21. lcm_state = "BOOT_UNKNOWN"
  22.  
  23. command = "log.rb"
  24.  
  25. arguments = "$ID $PREV_STATE $PREV_LCM_STATE" ] 

#号去掉,然后重启服务.


1分钟后,另外一台主机自动接管了,虚拟机恢复正常,可以根据自己的需求来修改钩子触发的配置文件,来达到高可用目的.


本文作者:佚名

来源:51CTO

网友评论

登录后评论
0/500
评论
晚来风急
+ 关注