开始:

           环境准备

网络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 root@192.168.56.180:~/

#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 cirros@10.0.2.151

密码: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错误,造成修改密码不成功。那么如何解决这个问题呢?

错误截图:

wKiom1ZSm9viEqD4AACSaZCAoT8600.jpg

一、版本查看

命令cat /etc/issue

wKiom1ZSgs7hinX3AAAt5wB7PW4910.jpg

二、进入单用户模式

按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不能被修改

wKioL1ZSmIDx70fGAAHAk2E5tUQ747.jpg

三、修改密码

首先查看权限有没有异常

# 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