<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } -->
手动安装的主要步骤:
1.流程,背景:
cloud controller node
compute node; 在多节点运作情况下,需要安装多个computenode
openstack工作原理:
openstack中存在各种组件,可以通过manage进行调用、触发,现在提供的服务有:nova-api,nova-objectstore,nova-compute,nova-volume,nova-network
nova-api是一个接口,它负责接受外界的xml请求,并将请求发送给相应模块
nova-objectstore是文件存储系统,S3,我们没有使用
nova-compute 负责管理虚拟机,通过rpc存在可供外部调用的公有函数
nova-volume负责管理可移动存储模块,通过rpc存在可供外部调用的公有函数
nova-network负责管理网络,比如我们使用的fixedIP。
运行实例成功之后,APISERVER将作为云的接口,与外部进行交互,而相关任务则交由各个模块完成。
Message Queue则作为计算节点、volumes、networkingcontrollers之间的接口,管理相互调用的次序。类似于python中多线程处理时使用的queue,用来保证资源的同步性,并避免同时访问、修改资源时产生冲突。
Network controller
volume workers
2.安装步骤:
apt-get install 各种软件包
配置MYSQL数据库
bash
MYSQL_PASS=nova
cat <<MYSQL_PRESEED |debconf-set-selections
#重导向标准输入,到bash执行命令,不明白直接在shell中使用有何不同
mysql-server-5.1mysql-server/root_password password $MYSQL_PASS
mysql-server-5.1mysql-server/root_password_again password $MYSQL_PASS
mysql-server-5.1mysql-server/start_on_boot boolean true
MYSQL_PRESEED
安装mysql-server
apt-get install mysql-server
sed -i 's/127.0.0.1/0.0.0.0/g'/etc/mysql/my.cnf
将 127.0.0.1替换为 0.0.0.0,不明白参数-i是什么意思。。
service mysql restart
mysql -uroot -p$MYSQL_PASS -e 'CREATEDATABASE nova;'
建立数据库
mysql -uroot -p …. -e “GRANT ALLPRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;”
配置数据库权限,root是超级用户
mysql -uroot -p... -e “SET PASSWORD FOR'root'@'%' = PASSWORD('$MYSQL_PASS);”
设置数据库密码
安装computenode,网络环境选择flat
由于使用flat,需要进一步配置网络环境,以确保nodes和VM之间的通信
编辑 /etc/network/interfaces
创建一个网桥,将计算节点和外部IP地址设置在该网桥上
networking restart
重启nova相关的6个服务,从而让各种配置生效。
编辑nova.conf中的各种参数
--daemonize # 可能是事件触发管理,应该赋值1?
--dhcpbridge_flagfile=/etc/nova/nova.conf #路径变量
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--sate_path=/var/lib/nova
--sql_connection
--s3_host #OBJ service, not used
--rabbit_host #192.168.0.2 SQL数据库的地址
--cc_host #nova-api运行地址
--verbose #估计是输出各种debug信息,赋值1则奇效
--ec2_url #HTTP URL;nova-api的interface地址,80端口的相应resouce被调用时,则会触发这一接口
--network_manager #flatmanager
--fixed_range #虚拟机的IP段,192.168.0.0/24例子中设置的为12
--network_size #虚拟机最多可以使用多少个IP地址,即可以存在多少个实例
#其中,fixed_range和network_size以及之后会设置的project-network应该与实际情况相符,比如bridge应该是在同一个网段,而且可能应该设置实际分配的IP地址,不能与已有IP冲突。比如可以配置192.168.0.128/25,或者192.168.0.192/26.具体如何确定每个实例的IP就不知道了。
addgroup nova
chown -R root:nova /etc/nova
chmod 644 /etc/nova/nova.conf
增加对nova.conf的权限(root将失去写权限?)
配置计算环境
python /usr/bin/nova-manage db sync
python /usr/bin/nova-manage user admin<user_name>
python /usr/bin/nova-manage projectcreate <project_name> <user_name>
python /usr/bin/nova-manage networkcreate <project-network><nuber-ofnetworks-in-project><IPs in project>#<project-network>的网段应该落在虚拟机IP段內,并考虑多接点的情况,不应该出现ip段重复的情况。该配置保存于mysql中,之后可在dbnetworks 中修改。
创建创建实例时所需要的认证
mkdir -p /root/creds
python /usr/bin/nova-manage projectzipfile $NOVA_PROJECT $NOVA_PROJECT_USER /root/creds/novacreds.zip#我们使用flat模式,会出现一个警告
unzip /root/creeds/novacreds.zip -d /root/creds/
cat /root/creds/novarc >> ~/.bashrc#将novarc中的环境变量保存到.bashrc中
source ~/.bashrc #在terminal中导入bashrc
建立到虚拟机的网络通道
euca-authorize -P icmp -t -1:-1 default #ping
euca-authorize -P tcp -p 22 default #ssh
如果出现建立失败,检查dnsmasq进程,如果在实例运行时,应该有两个在运行,否则killalldnsmasq service nova-network restart。
配置多个计算结点 #暂时没有使用
网络配置
我们使用的flatmode,建立网桥,实例的IP地址与主机在一个IP段,并且写到IPtable中
在/etc/nova/nova.conf中进行配置
nova-manage network create CIDR n n#建立虚拟机寄宿的子网,nn网络数量1,IP个数
将网桥和网络连接
#以上建立的网络或者说子网,是我们的虚拟机运行的平台。database中保存了网络配置相关东西,如果改名,比如br100,需要更改MYSQL-DB
以上,完成虚拟机的运行环境,开始建立计算节点的实例:安装虚拟机(image),并运行实例,通过nova-api一类的interface,可以从外部对其进行访问。
Uec-publish-tarball image [bucket-name][hardware-arch]#返回emi,是虚拟机的ID,在运行的时候需要用到。
Euca-describe-images #解压
euca-run-instances $emi -k mykey -tm1.tiny #mykey 和m1.tiny是返回的值?不明白
当状态从launching变为running之后,就可以通过ssh进行连接,用户名密码均为ubuntu
sudo -i,改变ubuntu用户的权限到root
euca-terminate-instances $instanceid#该ID即emi?可通过euca-describe-instances查看
至此,运行实例完成,以下为进一步说明云中的服务结构
管理云…………
nova-manage category command [args]
#categor: user, project, role, shell,vpn, floating