码迷,mamicode.com
首页 > 其他好文 > 详细

【实战+视频】在龙芯CPU和中标麒麟系统上装品高云,实现EC2,EIP,VPC等云服务

时间:2016-06-12 02:01:17      阅读:439      评论:0      收藏:0      [点我收藏+]

标签:

本文详细描述了,如何在国产CPU,龙芯3B(MIPS架构)+中标麒麟OS的运行情况下,如何安装部署品高云(BingoCloudOS),并实现弹性服务器(EC2)、弹性IP(EIP)和虚拟私有云(VPC)等云服务。

至此实现了全国产化(国产CPU+国产OS+国产云操作系统)组团的云操作系统架构,为军队、涉密单位乃至未来的国家整体国产化云平台奠定了坚实基础。

先用一个视频,展示下最终成果

环境信息与思路

版本信息

组件 版本
龙芯CPU 3B(MIPS架构)
中标麒麟(类RHEL) 版本:6.0_U5,内核版本:2.6.32-0.54(安装过程中需升级内核版本至2.6.32-1.6)
Erlang R14B
yaws 1.89
LXC 1.1.0
BingoCloudOS 5.5.0.150716

安装思路及背景

  BingoCloudOS云平台依赖Erlang、yaws(云控制器依赖),而源内暂无现成的rpm包,所以在安装BingoCloud云平台前,需要先编译安装这几种包,然后对系统做一些调整,由于龙芯CPU并不支持kvm等虚拟化,则我们采取用LXC容器的方式启动虚拟机,因此我们还需升级系统内核。再依次安装BingoCloud的云控制器,集群和节点。

1.准备工作

1.1.清除iptables配置

#iptables --flush
#service iptables save; service iptables restart
#iptables --list

正确应返回下列内容:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

1.2.禁用SELinux (默认就禁用了)

#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config
#setenforce 0
#/usr/sbin/sestatus -v

正确应返回:

SELinux status: disable

1.3.把服务器伪装成RedHat系统

  由于BingoCloudOS并没有针对NeoKilin系统的安装脚本,所以需要伪装成redhat系统:
  为了让 lsb_release –id 指令能输出 RedHatEnterpriseServer,需要手工创建脚本如下

#vi /usr/bin/lsb_release

内容如下:

#!/bin/sh
echo Distributor ID: RedHatEnterpriseServer

测试结果:

#chmod +x /usr/bin/lsb_release
#lsb_release --id

正确应返回:

Distributor ID:RedHatEnterpriseServer

1.4.准备本地yum源:

  挂载yum源光盘到本地路径,修改/etc/yum.repos.d/rhel-source.repo,指定baseurl和gpgkey为相应源路径,编辑内容如下,其中/media/cdrom为挂载repo光盘的路径:

#vim /etc/yum.repos.d/rhel-source.repo

内容如下:

baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
gpgkey=file:///media/cdrom

设置好yum源后刷新源缓存

#yum clean all
#yum makecache

1.5.通过yum安装云平台上的各种依赖

主控依赖
#yum install lvm2 vconfig sysstat bridge-utils expect mysql-server -y

集群依赖
#yum install lvm2 vconfig sysstat bridge-utils dhcp -y

节点依赖
#yum install lvm2 vconfig sysstat bridge-utils -y

编译Erlang的依赖
#yum install ncurses- autoconf -y

编译Erlang的依赖
#yum install openssl openssl-devel -y

编译yaws的依赖
yum install pam-devel gcc gcc-c++ -y

2.编译安装Erlang

2.1.去Erlang官网下载这里写代码片`

#wget http://www.erlang.org/download/otp_src_R14B.tar.gz
#tar -xvzf otp_src_R14B.tar.gz
#cd otp_src_R14B

2.2.修改配置文件

#vim erts/autoconf/config.guess
作如下修改:

##将 mips64: 修改为 mips64*:
##修改位置的上下文:
mips64*:Linux::)
eval $set_cc_for_build

等同于用以下命令替换:
#sed -i ‘s/mips64:Linux:/mips64\*:Linux:/g‘ erts/autoconf/config.guess

2.3.编译Erlang

#export ERL_TOP=`pwd`
#./otp_build autoconf
#./otp_build configure --host=mips64el-linux --build=mips64el-unknown-linux-gnu erl_xcomp_sysroot=/

完成后提示: odbc : ODBC library - link check failed odbc
即,odbc未安装,这个可忽略;wx未安装,也可忽略。
接下来这个要编译要执行很久

./otp_build boot -a

2.4.手动安装Erlang至合适位置,并添加环境变量使系统能顺利访问

#./otp_build release -a
#mkdir /usr/lib64/erlang/ -p
#cp -r release/mips64el-unknown-linux-gnu/*  /usr/lib64/erlang/.
#cd /usr/lib64/erlang
#./Install -minimal `pwd`
#export PATH=$PATH:/usr/lib64/erlang/bin
#echo ‘export PATH=$PATH:/usr/lib64/erlang/bin‘ >> /etc/bashrc
#ln -s /usr/lib64/erlang/bin/erl /usr/bin/erl

至此完成Erlang的安装,可执行erl测试是否可用:
#erl

应该出现如下内容:

Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:16:15] [rq:16] [async-threads:0] [kernel-poll:false]

Eshell V5.8.1 (abort with ^G)
1>

出现erl控制台,则说明erl已正确安装。

3.编译安装yaws (云主控制器需要,作为主控的web服务器)

3.1 去yaws官网下载源码包并解压

#wget http://yaws.hyber.org/download/yaws-1.89.tar.gz
#tar -xvzf yaws-1.89.tar.gz
#cd yaws-1.89

3.2 编译安装yaws

#./configure --host=mipsel-linux --build=mips64el-unknown-linux-gnu  --prefix=/usr/lib64/erlang/lib/yaws
#make
#make install

3.3 调整yaws的位置,令erlang能正确调用

#cp -r /usr/lib64/erlang/lib/yaws/lib/yaws /usr/lib64/erlang/lib/yaws-1.89

3.4 测试yaws是否可用

#erl

在erl控制台下输入l(yaws). 能返回{module,yaws}则说明yaws已安装正确

Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:16:15] [rq:16] [async-threads:0] [kernel-poll:false]

Eshell V5.8.1 (abort with ^G)
1> l(yaws).
{module,yaws}
2>

4.安装LXC容器 (云节点需要,作为节点的虚拟化工具)

4.1.在安装LXC前,需升级内核至1.6.0版

#tar -xvf LXC-1.1.0.tar
#cd LXC-1.1.0/KERNEL/

用rpm包将内核升级至2.6.32-1.6版

#rpm -Uvh kernel-*.rpm

4.2.调整grub引导启动的vmlinux

#cd /boot/
#cp vmlinuz-2.6.32-1.6.ns6.mips64el boot/.
#cd boot/

备份旧内核vmlinux

#mv vmlinux vmlinux_old

更新新内核vmlinux

#mv vmlinuz-2.6.32-1.6.ns6.mips64el vmlinux

4.3.重启系统更新内核

重启
#reboot

#uname -r
正确应返回:2.6.32-1.6.ns6.mips64el,内核更新成功

4.4.安装LXC,并检查是否能正常使用

#cd LXC/
#rpm -ivh *.rpm
#lxc-checkconfig

正确应返回:

Kernel configuration not found at /proc/config.gz; searching…
Kernel configuration found at /boot/config-2.6.32-1.6.ns6.mips64el
— Namespaces —
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled

— Control groups —
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: /usr/bin/lxc-checkconfig: line 103: [: too many arguments
enabled
Cgroup cpuset: enabled

— Misc —
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities:
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

4.5.后续操作

#mkdir /var/lib/lxc/rootfs/ -p
#mkdir /cgroup
#echo -e "cgroup\t\t\t/cgroup\t\t\tcgroup\tdefaults\t0 0" >> /etc/fstab
#mount -a
#mount

5.安装云主控制器

5.1.建立mysql数据库

#sqlpasswd=pass@word1

设mysqld开机启动
#chkconfig mysqld on

启动mysqld服务
#service mysqld start

设置数据库密码
`#mysqladmin -u root password “${sqlpasswd}”

进入数据库
#mysql -u root -p

增加品高云所用数据库,并退出

>GRANT ALL PRIVILEGES ON . TO bingocloud@”%” IDENTIFIED BY ‘pass@word1’ WITH GRANT OPTION;

>quit

5.2.解压BingoCloudOS

#mkdir -p /opt/bingocloud/latest
#tar -xvzf bingocloud-v5.5.0.150716.tar.gz -C /opt/bingocloud/latest

5.3.调整安装脚本

  由于原生的BingoCloudOS此时调用RedHat的安装脚本(指向CentOS),所以我们针对麒麟系统在安装脚本中做适当的调整(防止安装过程中用rpm –q命令检测erlang和yaws等依赖,从而避免安装云服务时意外中止),具体调整如下:
#vim /opt/bingocloud/latest/output/tools/install/install_installer.centos.sh

注释这句: sudoyuminstall?y"install”/res/rpm/erlang-r14b/*.rpm
注释这句: sudoyuminstall?y"install”/res/rpm/yaws-1.89/*.rpm

#vim /opt/bingocloud/latest/output/tools/install/install_cloud.centos.sh

将install_res=”rpm -q erlang yaws lvm2 vconfig sysstat bridge-utils
改成下面那句:
install_res=”rpm -q lvm2 vconfig sysstat bridge-utils

#vim /opt/bingocloud/latest/output/tools/install/install_cluster.centos.sh

将install_res=”rpm -q erlang dhcp lvm2 vconfig sysstat bridge-utils scapy
改成下面那句:
install_res=”rpm -q dhcp lvm2 vconfig sysstat bridge-utils

#vim /opt/bingocloud/latest/output/tools/install/install_node.centos.sh

将install_res=”$su_do rpm -q erlang lvm2 vconfig sysstat bridge-utils qemu-kvm libvirt-client
改成下面那句:
install_res=”$su_do rpm -q lvm2 vconfig sysstat bridge-utils

另外,可运行以下命令快速更改:

#cd /opt/bingocloud/latest/output/tools/install

#sed -i ‘s/\$su_do yum install -y \"/\#\$su_do yum install -y \"/g‘ install_installer.centos.sh

#sed -i ‘s/rpm -q erlang yaws lvm2 vconfig sysstat bridge-utils/rpm -q lvm2 vconfig sysstat bridge-utils/g‘ install_cloud.centos.sh

#sed -i ‘s/rpm -q erlang dhcp lvm2 vconfig sysstat bridge-utils scapy/rpm -q dhcp lvm2 vconfig sysstat bridge-utils/g‘ install_cluster.centos.sh

#sed -i ‘s/rpm -q erlang lvm2 vconfig sysstat bridge-utils qemu-kvm libvirt-client/rpm -q lvm2 vconfig sysstat bridge-utils/g‘ install_node.centos.sh

5.4.运行安装脚本安装BingoCloudOS

#sh /opt/bingocloud/latest/output/install_bingocloud.sh
Please visit the following page to complete installation:
http://10.202.166.5:8663/

5.5.在云主控制器IP:8663的网页上完成云平台的后续安装

安装完成后,需要进一步添加集群和节点,添加节点前的前期准备工作步骤见后

6.调整云平台节点

6.1.编写脚本反馈节点规模的信息

  由于未安装libvirt组件,所以节点不能通过virsh nodeinfo这个命令来反馈给主控可以调用多少资源,所以我们手动编写脚本,完成信息的反馈(里面参数根据实际情况而定)。

#vi /bin/virsh

添加如下内容

#!/bin/bash
if [ “$*” = “nodeinfo” ]; then
echo “CPU model: mips64”
echo “CPU(s): 4”
echo “CPU frequency: 800 MHz”
echo “CPU socket(s): 1”
echo “Core(s) per socket: 2”
echo “Thread(s) per core: 1”
echo “NUMA cell(s): 1”
echo “Memory size: 4000000 KiB”
fi

#chmod +x /bin/virsh
#virsh nodeinfo

正确应返回下列内容

CPU model: mips64
CPU(s): 4
CPU frequency: 800 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 4000000 KiB

6.2.打补丁优化云平台对LXC的调用

#cd /opt/bingocloud/latest/output/lib/cloudutility/ebin/
#mv vmachine_lxc.beam vmachine_lxc.beam.bak
#cp /root/bingocloud/patch/vmachine_lxc.beam ./

6.2.复制镜像文件

#cd -r /root/bingocloud/bcshare/image /bcshare/cloud/image
#touch /bcshare/.bingocloud

7.在云控制器的控制页面添加集群和节点,并运行虚拟机

7.1.安装云控制器

上接章节【5.5.在云主控制器IP:8663的网页上完成云平台的后续安装】,完成运行BingoCloudOS安装脚本后,访问云控制器的8663端口进行接下来的安装:

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

7.2.添加集群

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

7.3.添加节点

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

7.4.创建云网络

技术分享

技术分享

7.5.注册现有镜像

技术分享
( 关于用LXC容器创建镜像的具体步骤,将在后续文档详细介绍 )

7.6.创建实例

技术分享

技术分享

技术分享

技术分享

技术分享

7.7.添加及绑定弹性IP

技术分享

技术分享

技术分享

技术分享

技术分享

7.8.成功创建实例并用ssh连接实例

技术分享

技术分享

能顺利用ssh 登陆到实例中,至此,龙芯CPU和中标麒麟系统上成功安装品高云平台。

技术分享

【实战+视频】在龙芯CPU和中标麒麟系统上装品高云,实现EC2,EIP,VPC等云服务

标签:

原文地址:http://blog.csdn.net/qxk2001/article/details/51637197

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!