开始:
环境准备
网络1:物理机与虚拟机相连。host-only,用于管理网络。DHCP off
网络2:OpenVswitch 占用网路。Host-only。
网络3:数据通讯网络。Host-only。指的是存储数据的大规模数据
网络4:链接internet网络。NAT
ubuntu只能以普通账户登录
$ sudo passwd root //启动root
$ su - root
虚拟机4网卡
vmnet2—hostonly 192.168.56.1
vmnet3—hostonly 192.168.57.1
vmnet4—hostonly 192.168.58.1
vmnet5—NAT
修改vmware Fusion vmnet
/Library/Preferences/VMware\Fusion/networking
修改ubuntu 网络配置
vim /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.56.180
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8
auto eth1
iface eth1 inet dhcp
auto eth2
iface eth2 inet dhcp
auto eth3
iface eth3 inet static
address 10.0.2.2
netmask 255.255.255.0
gateway 10.0.2.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8
重启电脑后,需要虚拟机可以ping通过外网,通过NAT网卡
查看命令 route (如过default默认为192.168.56.1 0.0.0.0 eth)
删除默认 route del default gw 192.168.56.1 eth0
增加默认 route add default gw 10.0.2.1 eth3
如果仍然ping 百度显示unkonw
vi /etc/nsswitch.conf
hosts: files dns
networks: files
改成:
hosts: files dns wins
networks: files
如果不一样的话,就在hosts:原来那行后面加个wins 就行了。
本地更新源
root@ubuntu:~# mount /dev/sdb1 /data/ 挂载光盘
root@ubuntu:~# vim /etc/nginx/sites-enabled/default //nginx的配置文件
root@ubuntu:~#nginx -t
root@ubuntu:~#nginx //启动nginx
或者
root@ubuntu:~#service nginx
s-allinone主机:
root@s-allinone:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak //备份文件
root@s-allinone:~# vim /etc/apt/sources.list
:%s,us.archive.ubuntu.com,192.168.1.108/archive.ubuntu.com,g //替换为本地源
并且注释掉全部的security.ubuntu.com相关选项
可以增加置MongoDB源
deb http://192.168.1.108/downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
网络更新源:
#vim /etc/apt/sources.list
:%s,us.archive.ubuntu.com,cn.archive.ubuntu.com,g
注释掉zib
#apt-get update
拷贝openstack-ubuntu-14.04到vbox
#scp -pr openstack-ubuntu-14-04.tar.gz [email protected]:~/
#mv openstack-ubuntu-14-04.tar.gz /opt/
#tar -zxvf openstack-ubuntu-14-04.tar.gz
#cd openstack-ubuntu-14-04/
初始化
#./init.sh
#./create_link.sh
安装keystone
运行初始化脚本
#cd openstack-ubuntu-14-04/
#./init.sh
#./create_link.sh
创建repo数据库
#cd tools/
#./create_http_repo.sh
查看
#ls /var/www/html/pip/
一、安装mysql
#cd chap03/
#cd mysql/
修改变量
#vim localrc
MYSQL_ROOT_PASSWORD=mysqlpassword(root密码视情况修改)
MYSQL_HOST=192.168.56.180(用与主机互联IP)
#hostname -I (不可以使用vswitch和数据IP)
#./mysql.sh 执行安装脚本
数据库连接过慢,解决方法:
#vim /etc/mysql/my.cnf
skip-external-locking
skip-name-resolve ---增加此行
重启Mysql服务
#/etc/init.d/mysql restart
Root用户连接mysql数据库
#mysql -uroot -pmysqlpassword
mysql>exit
or
#mysql -uroot -pmysqlpassword -h192.168.56.180
mysql>exit
#cd rabbitmq/
#vim localrc
#./rabbitmq.sh
#service rabbitmq-server status
#cd keystone/
#ls
#vim localrc
#./keystone.sh
# cd ~
# source keyrc
# keystone user-list
# keystone endpoint-list
# keystone tenant-list
# ps aux | grep keystone
日志文件
# cd /var/log/nova/keystone.log
查看指定用户
# keystone user-list
# keystone user-get e1258ecd555c4a428e05c
# keystone tenant-list
# keystone tenant-get d38d90cf297941a38f32
查看当前磁盘,sda系统、sdb-swift、sdc-cinder
# fdisk -l
安装swift
#cd chap04/
修改变量IP
# vim localrc
使用主机IP通信
# hostname -I
安装脚本
# ./swift.sh
# ./swift-storage.sh
查看挂在
# mount
/dev/sdb on /srv/node/sdb1 type xfs (rw)
删除重复挂载
# vim /etc/fstab
/dev/sdb /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
swift的重要组件路径
# ls /srv/node/sdb1/
查看
# ps aux | grep swift
日志
# ls /var/log/swift/
家目录执行
# source swiftrc
查看状态
# swift stat
查看帮助
# swift --help
查看存储文件夹
# swift list
创建存储文件夹
# swift post mydir
上传swiftrc到存储的mydir上
# swift upload mydir swiftrc
查看存储文件夹内文件
# swift list mydir
下载存储上mydir文件夹内的swiftrc文件
# swift download mydir swiftrc
删除存储上mydir内的swiftrc文件
# swift delete mydir swiftrc
安装Glance
# cd chap05
修改配置文件
# vim localrc
已经安装了swift的话,使用以下脚本
# ./glance-with-swift.sh
查看运行的glance
# ps aux | grep glance
家目录查看
# cd
# source glancerc
查看存储状况
# glance index
日志文件
# ls /var/log/glance/
安装Quantum
# cd chap06/
修改配置文件
# vim localrc
安装quantum服务
# ./quantum.sh
安装代理服务
# ./quantum-agent.sh
修改网卡配置
# vim /etc/network/interfaces
修改eth3,增加br-ex桥接
auto eth3
iface eth3 inet manual
up ip link set $IFACE up
down ip link set $IFACE down
auto br-ex
iface br-ex inet static
address 10.0.2.100
netmask 255.255.255.0
gateway 10.0.2.1
dns-nameservers 8.8.8.8
重启网卡
# ifconfig eth3 down
# ifconfig eth3 0.0.0.0 up
增加网卡link
# ip link eth3 promisc on (14.04开始本条命令作废)
# ovs-vsctl add-port br-ex eth3
启动link网卡
# ifdown br-ex
# ifup br-ex
查看网卡状态
# ifconfig (eth3的IP消失出现在br-ex上)
开启ipv4的转发功能
# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
# sysctl -p
or
# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
测试内网可以通信
# ping www.baidu.com
读取变量
# source quantumrc
查看网络配置
# quantum net-list
日志位置
# ls /var/log/quantum/
查看启动进程
# ps aux | grep quantum
安装Cinder
# cd chap07
修改配置文件
# vim localrc
查看本地为cinder准备的磁盘
# fdisk -l /dev/sdc
安装cinder API
# ./cinder.sh
安装Cinder卷(真正的存储服务)
# ./cinder-volume.sh
查看cinder服务
# ps aux | grep cinder
查看日志文件
# ls /var/log/cinder/
读取cinder变量
# source cinderrc
查看cinder内容
# cinder list
安装nova
# cd chap08
# cd /opt/openstack/allinone/
修改配置文件
# vim localrc
安装nova
# ./nova-api.sh
安装虚拟机管理
# ./nova-compute.sh
查看nova进程
# ps aux | grep nova
查看nova日志
# ls /var/log/nova/
读取nova变量
# source novarc
查看nova状态
# nova list
# virsh list --all
安装Dashboard
cd chap09
修改配置
# vim localrc
安装平台
# ./dashboard.sh
在真机或其他主机访问:http://192.168.56.180
登录的用户名及密码:
# cat localrc
……
#---------------------------------------------
# Keystone
#---------------------------------------------
MYSQL_KEYSTONE_USER=keystone
MYSQL_KEYSTONE_PASSWORD=keystone_password
KEYSTONE_HOST=192.168.56.180
ADMIN_PASSWORD=admin_user_password
ADMIN_TOKEN=admin_token
SERVICE_TOKEN=$ADMIN_TOKEN
ADMIN_USER=admin
SERVICE_TENANT_NAME=service
……
openstack网络及使用
#cd openstack/tools/
#cp -rf create.network.sh ~/
#cp -rf cinderrc adminrc
#vim adminrc
#source adminrc
查看
#keystone user-list
#keystone endpoint-list
#keystone service-list
创建网络
# cp -rf /usr/local/bin/quantum /usr/local/bin/neutron
# cat ~/create.network.sh
# register cirros
#neutron router-create router01
#Router_ID=`neutron router-list | grep router01 | awk '{ print $2 }'`
# 这里建一个内部网络。这个内部网络与真实的物理机网络没有任何关系,是虚拟的。
# 但是网关,我们仍然习惯性的写成xxxx.1,采用默认的最好,不容易出问题。
#neutron net-create int_net
#neutron subnet-create \
--gateway 192.168.100.1 --dns-nameserver 8.8.8.8 int_net 192.168.100.0/24
# 得到内部网络的ID号。
#Int_Subnet_ID=`neutron net-list | grep int_net | awk '{ print $6 }'`
在这里可以查看一下网路结构图
登录192.168.56.180查看 项目>>Network Topology 及 admin>>Networks
以上为内网,如果上网需要添加路由器。
如下:
# 给刚才创建内部网络添加router.
#neutron router-interface-add $Router_ID $Int_Subnet_ID
此时查看Network Topology发生变化
# 这里再创建一个外部网络,这个外部网络是与真实的物理网络对应的。
#neutron net-create ext_net --router:external=True
# 我从物理机的交换机那里向网管要的一段IP地址,就是150到254。
# 所以我这里必须要照物理网络来配置。并且要求网管在物理环境上做好相应的配置。
# 这里的网关什么的,都是真实的网关。
#neutron subnet-create ext_net \
--allocation-pool start=10.0.2.150,end=10.0.2.254 \
--gateway 10.0.2.1 --dns-nameserver 8.8.8.8 10.0.2.0/24
# 这里拿到我创建好的外部网络的ID。这个ID存于OpenStack的数据。
#Ext_Net_ID=`neutron net-list | grep ext_net | awk '{ print $2 }'`
# 把router添加到外部网络中,添加成功之后,这个router会在外部网络中占用一个IP。
# 比如将192.168.100.1 与10.0.2.150捆绑好。在前面创建的内网的VM要上网的时候,
# 都从网关(192.168.100.1)出去时,openvswitch会自动把192.168.100.1处理为10.0.2.150(物理网络IP)的请求,
# 从而实现了上网。
#neutron router-gateway-set $Router_ID $Ext_Net_ID
# Step 3: Create VM
#nova boot --flavor 1 --image cirros.img --security_group default --nic net-id=$Int_Net_ID Ubuntu_Trusty
# Ste p4: Create floating ip
#neutron floatingip-create ext_net
#Device_ID=`nova list | grep Ubuntu_Trusty | awk '{ print $2 }'`
#Port_ID=`neutron port-list -- --device_id $Device_ID | grep 192.168.100.2 | awk '{print $2}'`
#Floating_ID=`neutron floatingip-list | grep 10.0.2.101 | awk '{ print $2 }'`
#neutron floatingip-associate $Floating_ID $Port_ID
#neutron floatingip-show $Floating_ID
连接外网映射IP
# ssh [email protected]
密码:cubswin:)
# ifconfig
查看虚拟机
# nova list
查看虚拟网卡连接状态
# ovs-vsctl list-br
# ovs-vsctl show
制作自己的虚拟机
创建一个qcow2
# qemu-img create -f qcow2 /tmp/trusty.qcow2 10G
注意指定一个CDROM,并开启×××
#virt-install --virt-type qemu --name trusty --ram 1024 --cdrom=/tmp/ubuntu-14.04.1-server-amd64.iso --disk /tmp/trusty.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=ubuntutrusty
(如果virt-intall命令无法使用请使用# apt-get install virtinst 安装后)
使用VNC开始安装trusty虚拟机---
(关闭virsh shutdown x 不好使时,使用:apt-get install acpid )
取消定义虚拟机
virsh undefine trusty
给予读取权限
# chmod a+r trusty.qcow2
上传glance
# glance image-create --name "ubuntu-14-04-server" --public --container-format bare --disk-format qcow2 < /tmp/trusty.qcow2
(注意如果glance不能用:source ~/adminrc)
program--》Instances--》Launch Instances --》Img选ubuntu-14-04-server --》Network选INS
虚拟机增长过程
# ls -al /opt/stack/data/nova/instances/_base/
(刷新即可)
刷新新的node
#virsh list --all
#virsh vncdisplay 7
打开新建的openstack虚拟机
重新启动计算机的过程中会在Nerwork中卡住,直接按键盘S(SKIP)跳过即可
主要导致开机速度过慢的原因是/分区的挂在被系统默认为ro
且进入系统后提示token认证错误,都因为这个。
-------------------------------注意事项如下----------------------------
重启后直接修改:
ubuntu版本14.04.3忘记了ROOT用户的密码,然后重启进入单用户后,修改密码提示Authentication token manipulation error错误,造成修改密码不成功。那么如何解决这个问题呢?
错误截图:
一、版本查看
命令cat /etc/issue
二、进入单用户模式
按CTRL+ALT+DEL重启系统,然后按任意键停住grub:
选择 Advanced options for Ubuntu
再选择:recovery mode
(如果是openstack-vm课直接修改ubuntu /挂在状态。)
按e进入编辑状态。
将linux开头那行的末尾"ro "改为 “rw single quiet splash init=/bin/bash”或 “rw single init=/bin/bash”
(注意:ro 是只读模式,rw是读写模式。)
然后按CTRL+X或F10进入单用户模式。
注:如果这个地方没改RO为RW,则可以进入单用户后#mount -rw -o remount / (mount -no remount,rw / mount -a),否则文件系统此时处于只读模式下,/etc/passwd和/etc/shadow不能被修改
三、修改密码
首先查看权限有没有异常
# ll /etc/passwd
-rwxr–r– 1 root root 2752 Dec 11 10:29 /etc/passwd
# fuser -u /etc/passwd
# lsof |grep passwd
尝试再次修改密码仍然出错,于是尝试修改/etc/passwd也出现错误
# chmod 777 /etc/passwd
chmod: changing permissions of `/etc/passwd': Operation not permitted
执行chattr
# chattr -i /etc/passwd
# lsattr -v /etc/passwd
2095582053 ————- /etc/passwd
# chattr -i /etc/shadow
# lsattr -v /etc/shadow
然后同步passwd和shadow文件
pwconv
最后成功修改密码
passwd root
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
部署Apache服务
运行ubuntu-vm(openstack模板启动的VM)
登录Dashboard--》program--》Instances
选择新建的test-ubuntu--》more--》associate floating IP (关联IP)--》IP address 后的+ --》associate
在openstack的主机上ssh到ubuntu-vm
# vim /etc/apt/sources.list (us.ubuntu.com替换成cn.ubuntu.com,删掉安全选项)
# apt-get update (更新,或测试ubuntu源)
# apt-get install apache2 (安装apache2)
chap13测试:
新开一台带桌面环境的虚拟机。
网卡改为NAT,DHCP
登录http://10.0.2.152(apache2的安装主机)
访问成功
重启之后启动 OpenStack
注意顺序
# service mysql start
# service rabbitmq-server start
# service keystone start
# source keyrc
# keystone user-list
检查/sdb 一定挂载在/sdb1上,如果错了手工修改
如果是最新的脚本,可以不用修改。
# vim /etc/fstab
# mount |grep sdb
# ./swift-storage.sh
# ps aux | grep swift
# source swiftrc
# swift stat
# ./glance.sh
# source glancerc
# glance index
# ./quantum.sh
# ./quantum-agent.sh
# source quantumrc
# quantum net-list
# ./cinder-api.sh
# ./cinder-volume.sh
# ps aux | grep cinder
# source cinderrc
# cinder list --(不报错即可因为没开启所以目前什么都没有)
# ./nova-api.sh
# ./nova-compute.sh
# ps aux | grep nova
# source novarc
# nova list -- (此时并无Vpc因为之前都安装在admin下)
# source adminrc
# nova list -- (之前安装的Vpc可查看)
# ./dashboard.sh
# virsh list --all
# virsh start instance-00000001
# virsh start instance-00000002
# virsh start instance-00000006
(注意此时可能仍然无法启动Vpc,登录Dashboard的Instaces--》more--》hard reboot)
# virsh list --all
# virsh vncdisplay instance-00000001