0%

1、控制节点

安装

# yum install spice-server spice-protocol openstack-nova-spicehtml5proxy spice-html5

这里提示:

alt text

直接下载spice-html5的RPM包并安装:

# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/s/spice-html5-0.1.7-1.el7.noarch.rpm
# rpm -i spice-html5-0.1.7-1.el7.noarch.rpm

配置

修改配置文件

# vim /etc/nova/nova.conf
[default]
vnc_enabled=false
[spice]
html5proxy_host=0.0.0.0
html5proxy_port=6082
keymap=en-us

停止novncproxy并取消自启动

# systemctl stop openstack-nova-novncproxy.service
# systemctl disable openstack-nova-novncproxy.service

启用spicehtml5proxy开机自启动并启动它

# systemctl enable openstack-nova-spicehtml5proxy.service
# systemctl start openstack-nova-spicehtml5proxy.service

2、计算节点

安装

# yum install spice-server spice-protocol spice-html5

这里同样提示找不到软件包spice-html5,参照控制节点安装方法。

配置

修改配置文件

# vim /etc/nova/nova.conf
[default]
vnc_enabled=false
[vnc]
enabled = False
[spice]
html5proxy_base_url=
server_listen=127.0.0.1
server_proxyclient_address=127.0.0.1
enabled=true
keymap=en-us

重启nova-compute

# systemctl restart openstack-nova-compute.service

但是通过dashboard并没有看到控制台。

alt text

这里发现实例是关机状态,重启实例后,在控制台发现:127.0.0.1拒绝了连接请求,因此参考vnc选项的配置,将IP修改如下:

[spice]

html5proxy_base_url=http://controller:6082/spice_auto.html
server_listen=$my_ip
server_proxyclient_address=$my_ip
enabled=true
keymap=en-us

将url修改为controller,其他IP修改为$my_ip
再次查看控制台:

alt text

安装成功!

本文参考:https://docs.openstack.org/ocata/install-guide-rdo/index.html 官方文档来手把手教你安装 Ocata,安装文档中有漏洞的地方,本文都会提及。

本文目录:

一、 安装环境

二、 认证服务

三、 镜像服务

四、 计算服务

五、 网络服务

六、 仪表盘

一、 安装环境

1、示例架构

根据官方文档,本文架构采用一个控制节点和一个计算节点。

(The example architecture requires at least two nodes (hosts) to launch a basic virtual machine or instance. )

控制节点运行认证服务、镜像服务、计算服务的管理部分、网络服务的管理部分、各种网络代理以及Dashboard,还包括一些基础服务如数据库、消息队列以及NTP。

计算节点上运行计算服务中管理实例的管理程序部分。默认情况下,计算服务使用 KVM。还运行网络代理服务,用来连接实例和虚拟网络以及通过安全组给实例提供防火墙服务。

2、网络

1) 公有网络

公有网络选项以尽可能简单的方式通过layer-2(网桥/交换机)服务以及VLAN网络的分割来部署OpenStack网络服务。实际上,它将虚拟网络桥接到物理网络,并依靠物理网络基础设施提供layer-3服务(路由)。另外,DHCP服务为实例提供IP地址。

2) 私有网络

私有网络选项扩展了公有网络选项,增加了layer-3(路由)服务,使用VXLAN类似的方式。本质上,它使用NAT路由虚拟网络到物理网络。另外,这个选项也提供高级服务的基础,比如LBaas和FWaaS。

这里我们选择私有网络。

3、安全

下面是各个需要密码的服务以及解释。

alt text

4、主机网络配置

1) 控制节点

配置网络接口

Controller;IP:192.168.0.112/24 GATEWAY:192.168.0.1

网络配置完之后需要将防火墙和selinux关闭。

关闭防火墙:systemctl stop firewalld.service
禁止防火墙开机启动;systemctl disable firewalld.service
关闭selinux:vim /etc/selinux/config selinux=disabled 
setenforce 0 使配置立即生效

配置地址解析

编辑/etc/hosts

# controller
192.168.0.112       controller
# compute1
192.168.0.113       compute1

2) 计算节点

配置网络接口

Compute:IP:192.168.0.113/24 GATEWAY:192.168.0.1

同样需要配置地址解析,参考控制节点。

配置完成之后需要进行验证:

1、与外网连通性:

分别在控制节点和计算节点上:

# ping -c 4 www.baidu.com

控制节点和计算节点连通性:

控制节点上输入# ping -c 4 compute1
计算节点上输入# ping -c 4 controller

5、NTP

1) 控制节点

安装相关包

# yum install chrony

编辑 /etc/chrony.conf

server NTP_SERVER iburst

可以根据需要将NTP_SERVER替换为合适的NTP服务器,建议不用改。
然后添加:

allow 192.168.0.0/24

即允许计算节点同步。(计算节点IP网段属于192.168.0.0)

# systemctl enable chronyd.service
# systemctl start chronyd.service

启动服务。

2) 计算节点

编辑/etc/chrony.conf,可以将其他的几个地址注释掉。

server controller iburst

同步控制节点:

# systemctl enable chronyd.service
# systemctl start chronyd.service

启动服务。

如果发现同步的不是控制节点,那么重启一下NTP服务即可。

验证操作:

在控制节点上同步时间:

# chronyc sources

带星号的是NTP当前同步的地址。

计算节点上同步。

# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===========================================================================
  ^* controller            3    9   377   421    +15us[  -87us] +/-   15ms

6、安装OpenStack包

以下操作在所有节点上进行。

启用OpenStack库:

# yum install centos-release-openstack-ocata

完成安装:

1.在所有节点上升级包

# yum upgrade

2.安装OpenStack 客户端

# yum install python-openstackclient

3.CentOS默认启用了SELinux,安装openstack-selinux来自动管理OpenStack服务的安全策略。

# yum install openstack-selinux

7、安装数据库

数据库一般运行在控制节点上。

安装并配置组件:

1、安装相关包:

# yum install mariadb mariadb-server python2-PyMySQL

2、创建并编辑/etc/my.cnf.d/openstack.cnf 文件,并完成以下操作。

在配置文件中添加以下配置:

[mysqld]
bind-address = 192.168.0.112
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
其中bind-address为控制节点IP地址。

完成安装:

1、启动数据库并设置开机启动:

# systemctl enable mariadb.service
# systemctl start mariadb.service

2、运行mysql_secure_installation脚本来保证数据库安全,为root账户设置一个合适的密码:

# mysql_secure_installation

8、消息队列

OpenStack使用消息队列来协调服务之间的状态和操作,消息队列服务一般运行在控制节点上。OpenStack支持RabbitMQ,Qpid以及ZeroMQ等消息队列服务。本指南使用RabbitMQ消息队列服务。

安装并配置组件:

1、安装相关包

# yum install rabbitmq-server

2、启动消息队列并设置开机启动

# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service

3、添加openstack用户

# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...

使用合适的密码替换掉RABBIT_PASS

4、允许openstack用户的配置、写、读权限:

# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...

9、缓存令牌

认证服务的认证机制使用Memcached来缓存令牌,一般运行在控制节点上。

安装并配置组件

1、安装相关包

# yum install memcached python-memcached

2、编辑 /etc/sysconfig/memcached文件并配置IP地址,将127.0.0.1改为控制节点IP

3、 完成安装

启动 Memcached服务并设置开机启动

# systemctl enable memcached.service
# systemctl start memcached.service

二、 认证服务

1、在控制节点上配置

前提条件

创建数据库:

以root身份登录数据库

$ mysql -u root -p

创建keystone数据库

MariaDB [(none)]> CREATE DATABASE keystone;

给数据库赋予适当的权限

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';

用合适的密码替换KEYSTONE_DBPASS

2、安装并配置组件

运行命令安装相关包

# yum install openstack-keystone httpd mod_wsgi

编辑文件/etc/keystone/keystone.conf

[database]选项配置数据库连接

[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

替换掉KEYSTONE_DBPASS

[token]选项中,配置Fernet令牌提供者

[token]
# ...
provider = fernet

1、同步认证服务数据库

# su -s /bin/sh -c "keystone-manage db_sync" keystone

2、初始化Fernet key仓库

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

3、引导认证服务

# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

替换掉 ADMIN_PASS

3、配置Apache服务器

1、编辑 /etc/httpd/conf/httpd.conf并配置ServerName选项,使之参考控制节点

2、给/usr/share/keystone/wsgi-keystone.conf文件创建一个链接

# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

完成安装

1、启动Apache服务器并设置开机启动

# systemctl enable httpd.service
# systemctl start httpd.service

2、配置管理账户

$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3

创建一个域、项目、用户和角色

1、本指南有一个service 项目,你添加的每一个服务都有唯一的用户。

$ openstack project create --domain default \
  --description "Service Project" service

2、普通的任务不应该使用具有特权的项目和用户。作为示例,本指南创建一个demo项目和用户。

创建demo项目:

$ openstack project create --domain default \
  --description "Demo Project" demo

创建demo用户:

$ openstack user create --domain default \
  --password-prompt demo

创建user角色:

$ openstack role create user

将user角色添加到demo项目和用户中。

$ openstack role add --project demo --user demo user

4、验证操作

1、 出于安全性的原因,禁用掉暂时的认证令牌机制。

编辑/etc/keystone/keystone-paste.ini文件,并从[pipeline:public_api], [pipeline:admin_api], 和 [pipeline:api_v3]选项中删除admin_token_auth

alt text

2、 取消设置临时的OS_AUTH_URLOS_PASSWORD环境变量

$ unset OS_AUTH_URL OS_PASSWORD

3、 使用admin用户,请求一个认证令牌

$ openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue

这里遇到错误

alt text

由于是Http错误,所以返回Apache HTTP 服务配置的地方
重启Apache 服务,并重新设置管理账户:

# systemctl restart httpd.service
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3

alt text

4、 使用demo用户,请求认证令牌:

$ openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name default --os-user-domain-name default \
  --os-project-name demo --os-username demo token issue

Password:

密码为创建demo用户时的密码。

5、创建OpenStack客户端环境脚本

在前面章节中,我们使用环境变量和命令的组合来配置认证服务,为了更加高效和方便,我们创建一个脚本方便以后的操作。这些脚本包括一些公共的操作,但是也支持自定义的操作。

1、创建脚本

创建并编辑 admin-openrc文件,并添加以下内容:

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=root
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换掉OS_PASSWORD的密码。

创建并编辑demo-openrc文件,并添加以下内容:

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

2、使用脚本

加载脚本文件更新环境变量:

$ . admin-openrc

请求一个认证令牌:

$ openstack token issue

下文待续。

一、环境安装

  1. 安装 Node.js https://nodejs.org/en/
  2. 安装 Git https://github.com/waylau/git-for-win
  1. 安装完成后,在开始菜单里找到“Git”->“Git Bash”,名称和邮箱是Github上的。
    git config --global user.name "***"
    git config --global user.email "i**@**.com"

  2. 安装 Hexo。所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。在命令提示符中:npm install -g hexo-cli好了到这一步我们环境全部安装好了。

二、设置

  1. 在命令行提示符中进入要设置blog的目录hexo init blog这条命令会创建一个blog的文件夹。提示INFO Start blogging with Hexo!
  2. 初始化hexo 之后source目录下自带一篇hello world文章, 所以直接执行下方命令:
    $ hexo generate #启动本地服务器
    $ hexo server #在浏览器输入 http://localhost:4000/就可以看见网页和模板了
    INFO Start processing
    INFO Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.
    这里发现网页一直无响应,应该是4000端口被占用了,所以这里换成5000
    hexo server -p 5000
    成功!
    alt text

3.将ssh-keygen.ext添加到环境变量,一般在git安装文件夹下bin下面。重新打开git bash,输入:ssh-keygen -t rsa -C "Github的注册邮箱地址"

之前一直在命令行提示符中执行命令,结果提示找不到ssh-keygen

一路Enter过来就好,得到信息:

Your public key has been saved in /c/Users/user/.ssh/id_rsa.pub.

找到该文件,打开(sublime text),Ctrl+a复制里面的所有内容,然后进入GitHub:https://github.com/settings/ssh

New SSH key ——Title:blog —— Key:输入刚才复制的—— Add SSH key

三、配置博客

在blog目录下,用sublime(为了防止乱码,yml是utf-8编码)打开_config.yml文件,修改参数信息

特别提醒,在每个参数的:后都要加一个空格

修改网站相关信息

title: 北子说
subtitle: Some essays
description: 我还是喜欢你,像风走了八万里,不问归期。
author: 北子
language: zh-Hans
timezone: Asia/Shanghai

配置部署

deploy: 
  type: git
  repo: https://github.com/yuanzizhen/yuanzizhen.github.io.git
  branch: master

四、发表文章

在命令行提示符中输入

$ hexo new "北子测试文章"
INFO  Created: F:\test\blog\source\_posts\北子测试文章.md

找到该文章,打开,使用Markdown语法

---
title: 北子测试文章
date: 2017-02-28 13:03:44
tags:
---
这是一篇测试文章,欢迎关注作者博客: https://yuanzizhen.github.io/

保存,然后执行下列步骤:

$ hexo clean
$ hexo generate
$ hexo server -p 5000

这个时候,打开http://localhost:5000/,发现看不到刚刚编辑的文章。原因:命令行提示符中执行

npm install hexo-deployer-git --save

成功!

alt text

这里乱码的原因是,配置文件中的中文没有用utf-8编码,因此,在配置的时候一定要注意编码。

最后一步,发布到网上,执行:

$ hexo deploy

其中会跳出Github登录,直接登录,如果没有问题输入yuanzizhen(换成你的).github.io/,然后就可以看到已经发布了

五、修改主题

我这里使用next主题,GitHub上面star数最多的主题。
https://github.com/iissnan/hexo-theme-next 而且还有详细的安装文档。
这里不再赘述。另外,我还添加了第三方服务多说评论,多说分享等。

在修改菜单项的时候遇到了不少错误,最终的配置如下:

主题配置文件

menu:
  home: /
  #categories: /categories
  #about: /about
  archives: /archives
  tags: /tags
  #sitemap: /sitemap.xml
  #commonweal: /404.html
  openstack: /categories/云计算
  code&tech: /categories/code-tech
  book: /categories/颜如玉
  essay: /categories/杂谈

同时修改图标:

menu_icons:
  enable: true
  #KeyMapsToMenuItemKey: NameOfTheIconFromFontAwesome
  home: home
  about: user
  categories: th
  schedule: calendar
  tags: tags
  archives: archive
  sitemap: sitemap
  commonweal: heartbeat
  openstack: cloud
  code&tech: code
  book: book
  essay: file-o

在主题文件夹下有一个language文件夹,下面找到自己设置的语言配置文件,我这里是zh-Hans:

menu:
  home: 首页
  archives: 归档
  categories: 分类
  tags: 标签
  about: 关于
  search: 搜索
  schedule: 日程表
  sitemap: 站点地图
  commonweal: 公益404
  openstack: 云计算
  code&tech: code-tech
  book: 颜如玉
  essay: 杂谈

在站点配置文件中还要修改:

# URL
## If your site is put in a subdirectory, set url as ‘http://yoursite.com/child' and root as ‘/child/‘
url: http://yuanzizhen.github.io
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
url要设置为自己的url。

到这里我的第一个博客就全部搭建完成了。

注意:

如果要修改了之前发布的文章,最好将对应的public文件夹下的静态网页删除掉,然后再hexo g生成,才能产生效果。

如果要设置阅读全文,最好是在文中合适的位置添加``

钱钱语录

  1. 金钱有一些秘密和规律,要想了解这些秘密和规律,前提条件是,你自己必须真的有这个愿望。

  2. 如果你只是带着试试看的心态,那么你最后只会以失败而告终,你会一事无成。尝试纯粹是一种借口,你还没有做,就已经给自己想好退路了。不能试验。你只有两个选择:做,或者不做。

  3. 你是否能挣到钱,最关键的因素并不在于你是不是有一个好点子。你有多聪明也不是主要原因,决定因素是你的自信程度一个人把精力集中在自己所能做的,知道的和拥有的东西上的那一天起,他的成功就已经拉开了序幕。这也使得一个孩子完全有能力比成人挣到更多的钱。

  4. 你最好想清楚,你喜欢做什么,然后再考虑你怎么用它来挣钱。

  5. 你要每天不间断地去做对你的未来意义重大的事情。你为此花费的时间不会超过10分钟,但是就是这10分钟会让一切变得不同。

  6. 欠债的人应当毁掉所有的信用卡。应当尽可能少地偿还贷款。应当将不用于生活的那部分钱中的一半存起来,另一半用于还债。最好不要申请消费贷款。每次借债前问自己:“这真的有必要吗?”

  7. 当你定下了大目标的时候,就意味着你必须付出比别人多得多的努力。

  8. 假如我没有了我的“鹅”,我就总是得为了赚钱而工作。但是一旦我有了属于自己的“鹅”,我的钱就会自动为我工作了。

  9. 幸运其实只是充分准备加上努力工作的结果。

  10. 钱只会留在那些为之付出努力的人身边。用非法手段取得不义之财的人,反而会比没钱的时候感觉更糟糕。

  11. 恐惧总是在我们设想事情会如何不顺的时候出现。我们对失败的可能性想得越多,就越害怕。而当你朝着积极的目标去思考的时候,就不会心生畏惧。

心中有梦,远方就有山和水。

终于有了属于自己的博客,那种开心和激动无以言表。博客对于我们来说,就好像是一个家,这是属于我们自己的,有任何的观点,有任何的想法,写下来吧!

其实一直都比较喜欢安静的生活,并不是孤独,而是相比喧闹,更加喜欢在自己的空间里,做自己喜欢的事,做自己该做的事,作为学生而言,大多数情况下学习是一个人的事情,和别人在一起所谓的讨论,只会浪费时间,当然,对方是大牛就另当别论了。尤其是在技术上,很多时候自己Google就好,不需要问任何人。


富家不用买良田,书中自有千钟粟。

安居不用架高堂,书中自有黄金屋。

出门无车毋须恨,书中有马多如簇。

娶妻无媒毋须恨,书中有女颜如玉。

男儿欲遂平生志,勤向窗前读六经。


上了研究生才真正的想要每天读一点书。一直都自诩是个爱读书的人,可以问起读过多少书,就只好汗颜了。大学四年的美好青春,如果每天都能读一点书,现在早就学富五车了吧。

心中应该有梦,无论这个梦有多大都不为过。

去年王健林说先定一个小目标,挣他一个亿。在知乎上有人说,自己和朋友在酒店吃饭,谈论起这个事情,一群人都开玩笑说,“王健林当初年轻的时候哪里会想到挣一个亿呢?”放到我们自己身上,大概也会有这种观点吧,可是没想到,王健林正好从电梯出去,拍了拍这个人的肩膀说,“小伙子,如果我像你这么年轻的话,一定不会只想着挣一个亿。”且不论这件事的真假如何,有大作为的人的心胸和梦想一定是非常人能够想象的。要问普通人和首富的区别在哪里,就在有无志向和梦想。“燕雀安知鸿鹄之志哉!”所以我们都还年轻,哪里就能把自己的一辈子给限定死了呢?

脚踏实地,仰望星空。