OpenStatck虚拟机环境准备-CentOS7.2安装

            OpenStatck虚拟机环境准备-CentOS7.2安装

                                       作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

   

  

  不得不吐槽一下CentOS7.5和7.6对OpenStack的支持并不友好,虽然可以正常安装OpenStack服务但无法创建虚拟机,没办法只能选择版本较低的“CentOS-7-x86_64-Minimal-1511.iso”镜像来安装OpenStack,本教程是记录一下创建虚拟机的注意事项。

 

 

一.使用"VMware Workstation"创建虚拟机

1>.下载ISO(下载地址:"http://archive.kernel.org/centos-vault/7.2.1511/isos/x86_64/")

2>.选择下载的iso

3>.自定义虚拟机名称及安装路径

4>.自定义磁盘空间

5>.CPU配置

6>.内存配置

 

二.基于"VMware Workstation"创建的虚拟机安装"CentOS 7.2"版本的操作系统

1>.开启虚拟机

2>.按"tab"键,追加"net.ifnames=0 biosdevname=0"内核参数,如下图所示。

3>.安装时语言选择默认的英语即可

4>.添加中文支持并选择时区

5>.自定义分区(不建议对swap进行分区)

6>.点击安装

7>.为管理员设置密码

9>.安装完毕后重启虚拟机

 

三.Linux操作系统初始化调优参数

1>.最小化安装操作系统必备命令行工具(别安装epel源哟,因为它会和openstack的源冲突)

[root@openstack.yinzhengjie.org.cn ~]# yum -y install vim net-tools bridge-utils firewalld bc iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel systemd-devel bash-completion traceroute psmisc  

2>.禁用"NetworkManager"服务

[root@centos72.yinzhengjie.org.cn ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-01-11 16:42:52 CST; 1min 32s ago
 Main PID: 871 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           └─871 /usr/sbin/NetworkManager --no-daemon

Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  (eth0): device state change: config -> ip-config (reason 'none') [50 70 0]
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  (eth0): device state change: ip-config -> ip-check (reason 'none') [70 80 0]
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  (eth0): device state change: ip-check -> secondaries (reason 'none') [80 90 0]
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  (eth0): device state change: secondaries -> activated (reason 'none') [90 100 0]
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  NetworkManager state is now CONNECTED_LOCAL
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  NetworkManager state is now CONNECTED_GLOBAL
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  Policy set 'eth0' (eth0) as default for IPv4 routing and DNS.
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  (eth0): Activation: successful, device activated.
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  wpa_supplicant running
Jan 11 16:42:57 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  startup complete
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# systemctl status NetworkManager
[root@centos72.yinzhengjie.org.cn ~]# systemctl stop NetworkManager
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2020-01-11 16:44:31 CST; 1min 25s ago
 Main PID: 871 (code=exited, status=0/SUCCESS)

Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  NetworkManager state is now CONNECTED_LOCAL
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  NetworkManager state is now CONNECTED_GLOBAL
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  Policy set 'eth0' (eth0) as default for IPv4 routing and DNS.
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  (eth0): Activation: successful, device activated.
Jan 11 16:42:52 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  wpa_supplicant running
Jan 11 16:42:57 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  startup complete
Jan 11 16:44:31 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  caught SIGTERM, shutting down normally.
Jan 11 16:44:31 centos72.yinzhengjie.org.cn NetworkManager[871]: <info>  exiting (success)
Jan 11 16:44:31 centos72.yinzhengjie.org.cn systemd[1]: Stopping Network Manager...
Jan 11 16:44:31 centos72.yinzhengjie.org.cn systemd[1]: Stopped Network Manager.
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# systemctl status NetworkManager

3>.禁用"firewalld"服务

[root@centos72.yinzhengjie.org.cn ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@centos72.yinzhengjie.org.cn ~]# 

3>.禁用"selinux"服务

[root@centos72.yinzhengjie.org.cn ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# sed -r -i 's/(SELINUX=)enforcing/\1disabled/' /etc/selinux/config 
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# sed -r -i 's/(SELINUX=)enforcing/\1disabled/' /etc/selinux/config

4>.修改Linux内核参数 

 

[root@yinzhengjie ~]# cat /etc/sysctl.conf 
#减少DDoS攻击,校验数据包的反向路径,如果反向路径不合适,则直接丢弃数据包,避免过多的无效连接消耗系统资源。
#防止IP Spoofing,校验数据包的反向路径,如果客户端伪造的源IP地址对应的反向路径不在路由表中,或者反向路径不是最佳路径,则直接丢弃数据包,不会向伪造IP的客户端回复响应。
net.ipv4.conf.default.rp_filter = 1

#启动haproxy的时候,允许忽视VIP的存在
net.ipv4.ip_nonlocal_bind = 1


#使用haproxy代理服务器同时也要打开内核的转发功能
net.ipv4.ip_forward = 1

#控制路由验证
net.ipv4.conf.default.accept_source_route = 0

#控制内核的系统请求调试功能
kernel.sysrq = 0

#控制核心转储是否将PID附加到核心文件名,用于调试多线程应用程序。
kernel.core_uses_pid = 1

#控制TCP同步器的使用,即在服务器资源(并非单指端口资源,拒绝服务有很多种资源不足的情况)不足的情况下,尽量不要拒绝TCP的syn(连接)请求,尽量把syn请求缓存起来,留着过会儿有能力的时候处理这些TCP的连接请求
net.ipv4.tcp_syncookies = 1

#禁用网桥上的netfilter。
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

#控制消息队列的默认最大大小
kernel.msgmnb = 65536

#以字节为单位控制消息的最大大小
kernel.msgmax = 65536

#以字节为单位控制最大共享段大小
kernel.shmmax = 68719476736

#在页中控制共享内存段的最大数量
kernel.shmall = 4294967296



#内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看"getconf PAGESIZE"
#    第一个数字表示,当tcp使用的Page少于786432(786432*4096/1024/1024/1024=3)时,kernel不对其进行任何的干预
#    第二个数字表示,当tcp使用了超过1048576(1048576*4096/1024/1024/1024=4)的Pages时,kernel会进入("memory pressure")压力模式
#    第三个数字表示,当 tcp 使用的pages超过1572864时(1572864*4096/1024/1024/1024=6,即相当于6GB内存),就会报:Out of socket memory
net.ipv4.tcp_mem = 786432 1048576 1572864


#为每个TCP连接分配的读、写缓冲区内存大小,单位是Byte,
#    第一个数字表示,为TCP连接分配的最小内存,即4096/1024=4k
#     第二个数字表示,为TCP连接分配的缺省内存,即8192/1024=80k
#     第三个数字表示,为TCP连接分配的最大内存
#
#以咱们的配置为例,我们就以缺省值进行计算读是87380(87380/1024=80k),写是16384(16384/1024)=16k),共计96K
#那么我们上面通过"net.ipv4.tcp_mem = 786432 1048576 1572864"分配的TCP内存就可以算出大致的连接数:
#    786432*4096/1024/96=32768
#    1048576*4096/1024/96=43690
#    1572864*4096/1024/96=65536
#
net.ipv4.tcp_rmem = 4096        81920   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304

#设置tcp/ip会话的滑动窗口大小是否可变,参数值为布尔值,为1时表示可变,为0时表示不可变.
#tcp/ip通常使用的窗口最大可达到65535字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力
net.ipv4.tcp_window_scaling = 1

#用来查找特定的遗失的数据包,有助于快速恢复状态
net.ipv4.tcp_sack = 1

#默认的TCP数据发送窗口大小(字节)。8388608/1024/1024=8M
net.core.wmem_default = 8388608

#默认的TCP数据接收窗口大小(字节).
net.core.rmem_default = 8388608

#接收套接字缓冲区大小的最大值(以字节为单位).
net.core.rmem_max = 16777216

#发送套接字缓冲区大小的默认值(以字节为单位).
net.core.wmem_max = 16777216

#当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。
net.core.netdev_max_backlog = 262144

#用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.somaxconn = 20480

#该参数指定了每个套接字所允许的最大缓冲区的大小
net.core.optmem_max = 81920


#表示SYN队列长度,默认1024,改成262144,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 262144

#在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_syn_retries = 3

# 该变量设置放弃回应一个tcp连接请求前,需要进行多少次重试
net.ipv4.tcp_retries1 = 3

#控制内核向已经建立连接的远程主机重新发送数据的次数,低值可以更早的检测到与远程主机失效的连接,因此服务器可以更快的释放该连接
net.ipv4.tcp_retries2 = 15

# 该参数设置TIME_WAIT重用,可以让处于TIME_WAIT的连接用于新的tcp连接
net.ipv4.tcp_tw_reuse = 1

#该参数设置tcp连接中TIME_WAIT的快速回收
net.ipv4.tcp_tw_recycle = 1

#对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.tcp_fin_timeout = 1

#该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除
net.ipv4.tcp_max_tw_buckets = 20000

#最大孤儿套接字(orphan sockets)数,单位是个
net.ipv4.tcp_max_orphans = 3276800

#禁用时间戳
net.ipv4.tcp_timestamps = 0

#tcp_synack_retries 显示或设定 Linux 核心在回应 SYN 要求时会尝试多少次重新发送初始 SYN,ACK 封包后才决定放弃。
#tcp_synack_retries 的值必须为正整数,并不能超过 255。因为每一次重新发送封包都会耗费约 3040 秒去等待才决定尝试下一次重新发送或决定放弃。
net.ipv4.tcp_synack_retries = 1

#开启SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1

#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_keepalive_time = 300

#TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适)
net.ipv4.tcp_keepalive_intvl = 30

#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。
net.ipv4.tcp_keepalive_probes = 3

#定义网络连接可用作其源(本地)端口的最小和最大端口的限制,同时适用于TCP和UDP连接。
net.ipv4.ip_local_port_range = 10001    65000

#定义内存分配策略,可选值:0,1,2
#    "0"表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
#    "1"表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
#    "2"表示内核允许分配超过所有物理内存和交换空间总和的内存。
vm.overcommit_memory = 0

#swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60
#Cloudera公司对于大数据集群推荐该值设置为1,其实在生产环境中我更推荐大家不要设置swap分区,而是将其设置为0,或者在安装操作系统时不指定swap分区,对于内存的使用有咱们程序员和运维人员来控制.
vm.swappiness = 1

[root@yinzhengjie ~]# 
[root@yinzhengjie ~]# 

 

5>.增加文件限制

[root@centos72.yinzhengjie.org.cn ~]# egrep -v "^#|^$" /etc/security/limits.conf 
*                soft    core               unlimited
*                hard    core               unlimited
*                soft    nproc              1000000
*                hard    nproc              1000000
*                soft    nofile             1000000
*                hard    nofile             1000000
*                soft    memlock            32000
*                hard    memlock            32000
*                soft    msgqueue           8192000
*                hard    msgqueue           8192000
[root@centos72.yinzhengjie.org.cn ~]# 

6>.修改主机名,自定义即可

[root@centos72.yinzhengjie.org.cn ~]# vim /etc/hostname 
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# cat /etc/hostname 
openstack.yinzhengjie.org.cn
[root@centos72.yinzhengjie.org.cn ~]# 
[root@centos72.yinzhengjie.org.cn ~]# reboot                   #重启以后验证上述配置是否生效,确认无误后关机并作快照,如下图所示。

posted @ 2018-12-26 21:12  尹正杰  阅读(1040)  评论(0编辑  收藏  举报