openstack-nova

openstack–nova

一、在controller122节点上的操作

登录MySQL创建数据库,建立Nova用户并赋权。

mysql -u root -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

#nova_api权限

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
 IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
 IDENTIFIED BY '000000';

#nova权限

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
 IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
 IDENTIFIED BY '000000';

#nova_cell0权限

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
 IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
 IDENTIFIED BY '000000';

4.命令. admin-openrc
5.#nova

openstack user create --domain default --password 000000 nova
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
openstack endpoint create --region RegionOne compute public http://controller122:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller122:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

#plancement

openstack user create --domain default --password 000000 placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://controller122:8780
openstack endpoint create --region RegionOne placement internal http://controller122:8780
openstack endpoint create --region RegionOne placement admin http://controller122:8780

6.安装Nova相关包

yum install openstack-nova-api openstack-nova-scheduler \
 openstack-nova-conductor openstack-nova-consoleauth \
 openstack-nova-novncproxy openstack-nova-placement-api \
 iptables

7.修改Nova服务的配置文件/etc/nova/nova.conf

[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
my_ip = 192.168.1.122 #controller122的IP
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api_database]
connection = mysql+pymysql://nova:[email protected]/nova_api

[database]
connection = mysql+pymysql://nova:[email protected]/nova

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://controller122:5000
auth_url = http://controller122:35357
memcached_servers = controller122:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 000000

[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

[glance]
api_servers = http://controller122:9292

[oslo_concurrency]
lock_path = /var/run/nova

[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller122:35357/v3
username = placement
password = 000000

8.添加信息到配置文件/etc/httpd/conf.d/00-nova-placement-api.conf

<Directory /usr/bin>
 <IfVersion >= 2.4>
 Require all granted
 </IfVersion>
 <IfVersion < 2.4>
 Order allow,deny
 Allow from all
 </IfVersion>
</Directory>

9.重启服务并验证

systemctl restart httpd
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
nova-manage cell_v2 list_cells

systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
二、在computer节点上的操作

1.下载Nova

yum install openstack-nova-compute

2.修改配置文件/etc/nova/nova.conf
快捷方式:传送controller122节点上的nova.conf文件
compute122节点上操作

1>scp [email protected]:/etc/nova/nova.conf /etc/nova/nova.conf
2>chown .nova /etc/nova/nova.conf

**注意:传送文件夹后openstack-nova-compute服务起不来有三种原因
1.查看防火墙是否关闭
2.主机名和域名一直,不要乱改域名
3.因为远程传送查看/etc/nova/nova.conf文件夹的权限
-rw-r—–. 1 root nova 990 May 9 19:18 nova.conf
所有者为:root 所属组:nova

openstack-glance

一、登录数据库建立glance数据库和glance用户并赋权

mysql -u root -p
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 '000000';

KEYSTONE_DBPASS==000000

在这之前keystone最后两步创建admin-openrc、demo-openrc文件
vim 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=000000
 export OS_AUTH_URL=http://controller122:5000/v3
 export OS_IDENTITY_API_VERSION=3
 export OS_IMAGE_API_VERSION=2

##controller == controller122
##ADMIN_PASS == 000000

vim 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=000000
 export OS_AUTH_URL=http://controller122:5000/v3
 export OS_IDENTITY_API_VERSION=3
 export OS_IMAGE_API_VERSION=2

##controller == controller122
##ADMIN_PASS == 000000

二、引入环境管理员环境变量

. admin-openrc

三、创建glance用户密码为000000

openstack user create –domain default –password 000000 glance

1.赋予glance用户admin角色加入service project

openstack role add --project service --user glance admin

2.创建名为glance的服务类型为image

openstack service create --name glance --description "OpenStack Image" image

3.创建image API接口

openstack endpoint create --region RegionOne image public http://controller122:9292
openstack endpoint create --region RegionOne image internal http://controller122:9292
openstack endpoint create --region RegionOne image admin http://controller122:9292

2.安装glance软件并配置相关文件

yum install openstack-glance -y

v2ray与openvpn配置过程中的心得与记录

v2ray与openvpn配置过程中的心得与记录:

1.关于v2ray之动态端口:

 经观察,v2ray的动态端口是十分有必要开启的.GFW对于单ip,单端口,同时未加入白名单的ip,将会进行重点探测,并进行限制.当然,越长时间的大流量使用单个ip更加容易造成GFW的”重点关照”,所以,这样看来,动态端口可以在一定的时间内另服务的ip的存活时间更长点,以下是v2ray白话文教程中对于动态端口的描述:

 通常情况下,V2Ray 的服务器端使用一个固定的端口来接收客户端的数据。这个端口由配置文件中的 port 属性指定如果同一端口通信时间过长,或流量过大,则有可能被服务商限速。于是V2Ray 提供了一个功能来动态调整通信端口。

 在新的配置中,V2Ray 服务器端依然使用一个主端口(即上文的 port)接收请求,但可以配置一个绕路(detour)的特性。配置之后,服务器会主动告诉客户端,使用一个新的端口 X 来通信,X 是一个范围(可配置)内随机选取的值。此端的有效期为 Y 分钟,客户端和服务器都会遵守这个时间,到期之后,客户端会继续向服务器请求新的端口来通信。以此循环。

 以下为corpama_HK服务器中v2ray配置的参照样例:
配置文件样例

2.关于v2ray与shadowsocks的性能比较:

 早在我的shaowsocks被封之后,我便在各大论坛上搜索过各个协议,方案的速度与性能比较,现贴出我找到的评测文章中最详细的一篇:

引用于:https://thinkgust.blogspot.hk/

V2Ray 和 Shadowsocks 的比较也是一个常见问题。既然我们有了一个性能测试的工具,那就一起测一下吧。
V2Ray SS CFB: V2Ray 中的 Shadowsocks 实现,AES-128-CFB 加密方式;
SS-Libev CFB: Shadowsocks libev 2.5.6,AES-128-CFB 加密方式,客户端 ss-tunnel,服务器端 ss-server;
SSR-PY CFB: ShadowsocksR 最新的代码(2017-01-20),AES-128-CFB 加密方式。其它的参数都是默认的:auth_aes128_md5、tls1.2_ticket_auth_compatible。
OTA 在所有 Shadowsocks 中都启用了。
实验结果(数据量:10 GB / 连接):
实验数据
解读如下:
VMess 的速度优于 Shadowsocks;
比起 ss-libev 和 ssr-python,V2Ray 在多并发连接的场景中更有优势

3.关于gfw的屏蔽方式:

引用于:https://thinkgust.blogspot.hk/

 GFW的应对措施是三步中最明显的,因为它最直接。GFW的重建过程和协议分析的过程需要耐心的试探才能大概推测出GFW是怎么实现的。但是GFW的应对手段我们每天都可以见到,比如连接重置。GFW的应对目前可以感受到的只有一个目的就是阻断。但是从广义上来说,应对方式应该不限于阻断。比如说记录下日志,然后做统计分析,秋后算账什么的也可以算是一种应对。就阻断方式而言,其实并不多,那么我们一个个来列举吧。

 -封IP

 一般常见于人工检测之后的应对。还没有听说有什么方式可以直接使得GFW的机器检测直接封IP。一般常见的现象是GFW机器检测,然后用TCP RST重置来应对。过了一段时间才会被封IP,而且没有明显的时间规律。所以我的推测是,全局性的封IP应该是一种需要人工介入的。注意我强调了全局性的封IP,与之相对的是部分封IP,比如只对你访问那个IP封个3分钟,但是别人还是可以访问这样的。这是一种完全不同的封锁方式,虽然现象差不多,都是ping也ping不通。要观摩的话ping twitter.com就可以了,都封了好久了。
 其实现方式是把无效的路由黑洞加入到主干路由器的路由表中,然后让这些主干网上的路由器去帮GFW把到指定IP的包给丢弃掉。路由器的路由表是动态更新的,使用的协议是BGP协议。GFW只需要维护一个被封的IP列表,然后用BGP协议广播出去就好了。然后国内主干网上的路由器都好像变成了GFW的一份子那样,成为了帮凶。

方式1

如果我们使用traceroute去检查这种被全局封锁的IP就可以发现,IP包还没有到GFW所在的国际出口就已经被电信或者联通的路由器给丢弃了。这就是BGP广播的作用了。

 -DNS劫持

 这也是一种常见的人工检测之后的应对。人工发现一个不和谐网站,然后就把这个网站的域名给加到劫持列表中。其原理是基于DNS与IP协议的弱点,DNS与IP这两个协议都不验证服务器的权威性,而且DNS客户端会盲目地相信第一个收到的答案。所以你去查询facebook.com的话,GFW只要在正确的答案被返回之前抢答了,然后伪装成你查询的DNS服务器向你发错误的答案就可以了.

方式2

 -TCP RST阻断

 TCP协议规定,只要看到RST包,连接立马被中断。从浏览器里来看就是连接已经被重置。我想对于这个错误大家都不陌生。据我个人观感,这种封锁方式是GFW目前的主要应对手段。大部分的RST是条件触发的,比如URL中包含某些关键字。目前享受这种待遇的网站就多得去了,著名的有facebook。还有一些网站,会被无条件RST。也就是针对特定的IP和端口,无论包的内容就会触发RST。比较著名的例子是https的wikipedia。GFW在TCP层的应对是利用了IPv4协议的弱点,也就是只要你在网络上,就假装成任何人发包。所以GFW可以很轻易地让你相信RST确实是Google发的,而让Google相信RST是你发的。

方式3

 -封端口

 GFW除了自身主体是挂在骨干路由器旁路上的入侵检测设备,利用分光技术从这个骨干路由器抓包下来做入侵检测 (所谓 IDS),除此之外这个路由器还会被用来封端口 (所谓 IPS)。GFW在检测到入侵之后可以不仅仅可以用TCP RST阻断当前这个连接,而且利用骨干路由器还可以对指定的IP或者端口进行从封端口到封IP,设置选择性丢包的各种封禁措施。可以理解为骨干路由器上具有了类似“iptables”的能力(网络层和传输层的实时拆包,匹配规则的能力)。这个iptables的能力在CISCO路由器上叫做ACL Based Forwarding (ABF)。而且规则的部署是全国同步的,一台路由器封了你的端口,全国的挂了GFW的骨干路由器都会封。一般这种封端口都是针对翻墙服务器的,如果检测到服务器是用SSH或者VPN等方式提供翻墙服务。GFW会在全国的出口骨干路由上部署这样的一条ACL规则,来封你这个服务器+端口的下行数据包。也就是如果包是从国外发向国内的,而且src(源ip)是被封的服务器ip,sport(源端口)是被封的端口,那么这个包就会被过滤掉。这样部署的规则的特点是,上行的数据包是可以被服务器收到的,而下行的数据包会被过滤掉。
 如果被封端口之后服务器采取更换端口的应对措施,很快会再次被封。而且多次尝试之后会被封IP。初步推断是,封端口不是GFW的自动应对行为,而是采取黑名单加人工过滤地方式实现的。一个推断的理由就是网友报道,封端口都是发生在白天工作时间。
在进入了封端口阶段之后,还会有继发性的临时性封其他端口的现象,但是这些继发性的封锁具有明显的超时时间,触发了之后(触发条件不是非常明确)会立即被封锁,然后过了一段时间就自动解封。目前对于这一波封SSH/OPENVPN采用的以封端口为明显特征的封锁方式研究尚不深入.

方式4

 -HTTPS间歇性丢包

 对于Google的HTTPS服务,GFW不愿意让其完全不能访问。所以采取的办法是对于Google的某些IP的443端口采取间歇性丢包的措施。其原理应该类似于封端口,是在骨干路由器上做的丢包动作。但是触发条件并不只是看IP和端口,加上了时间间隔这样一个条件。

4.关于OpenVPN在国内的使用:

 经过多次的实验,openvpn以及它的附属衍生项目softether均不可在国内正常使用,使用时间只要超过十分钟便会触发GFW的检测机制,进而导致服务器的ip被封,所以,在国内使用单纯的openvpn是绝对不可行的,即使你是在国内两台服务器之间建立加密隧道也会被掰,其原因已在之前引用的文段中说明,同时因为省级骨干网络也部署有GFW,所以这导致即使是国内的服务器间的加密通讯也是不可的,所以,openvpn在国内的使用时必须对其进行魔改,而其基本思路便是利用v2ray的加密与混淆功能为openvpn流量套上一层外壳,并混淆后再发出,以增加GFW的检测难度,较详细的配置过程已放在:利用V2Ray混淆加密OpenVPN流量以规避GFW的干扰与探测中.

html-Font Awesome

Font Awesome:
一款为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小、颜色、阴影或者其它任何支持的效果。

后期展示效果如下

一、html导入font awesome链接

1.在线导入

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">

2.本地导入
下载font awesome到网站的tempate/static目录下后在传入路径链接

<link href="/static/fontawesome/fontawesome-all.css" rel="stylesheet">

二、使用font awesome

1.在你需要的地方添加喜欢的icons

 <i class="fas fa-camera-retro"></i>

2.修改font awesome 的大小

<i class="fas fa-camera-retro fa-xs"></i>

文本内容来自

https://fontawesome.com 还有很多的icons

 

 

Emmet

Emmet:
是一款编辑器插件,支持多种编辑器支持。在前端开发中,Emmet 使用缩写语法快速编写 HTML、CSS 以及实现其他的功能,极大的提高前端开发效率。

使用方法:

一、进入.html后缀的文件

二、在文件中v选中,ctrl+y后出现tag:这个框,后在tag中输入emmet的缩写即可。

该方法方便快捷。

html-bootstrap

Bootstrap:
是最受欢迎的HTML、CSS、JS框架,用于开发响应式布局、移动设备优先的WEB目。

一、my-zsh中设置html文本的脚本
优点:每次编辑.html的文件,都会出现html的现成模板。

二、进入.vim、创建template文件夹、创建simple.html的html模板

1.cd .vim 
2.mkdir template
3.vim simple.html
在simple.html编辑如下信息

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
</head>
<body>
</body>

完成以上操作后,后期只要编辑.html后缀的脚本就能自动生成html格式的文件