Openstack 计算节点配置笔记(一)

时间:2023-01-09 00:11:30

<!-- @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则作为计算节点、volumesnetworkingcontrollers之间的接口,管理相互调用的次序。类似于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,需要进一步配置网络环境,以确保nodesVM之间的通信

 

编辑 /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-apiinterface地址,80端口的相应resouce被调用时,则会触发这一接口

--network_manager #flatmanager

--fixed_range #虚拟机的IP段,192.168.0.0/24例子中设置的为12

--network_size #虚拟机最多可以使用多少个IP地址,即可以存在多少个实例

#其中,fixed_rangenetwork_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网络数量1IP个数

将网桥和网络连接

#以上建立的网络或者说子网,是我们的虚拟机运行的平台。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#IDemi?可通过euca-describe-instances查看

 

至此,运行实例完成,以下为进一步说明云中的服务结构

 

 

 

管理云…………

nova-manage category command [args]

#categor: user, project, role, shell,vpn, floating