• 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                   #重启以后验证上述配置是否生效,确认无误后关机并作快照,如下图所示。

  • 相关阅读:
    Springboot注解@Scheduled定时任务的使用
    Springboot整合WebSocket和RabbitMQ实现服务器消息推送
    Springboot集成WebSocket实现消息推送功能
    RabbitMq: 主题交换机的使用(Topic Exchange)
    Rabbitmq: @RabbitListener 和 @RabbitHandler 搭配使用
    RabbitMQ开启 mqtt 协议
    @Import的简单使用
    idea快速生成对应数据库的实体类
    HttpClient封装工具类
    TypeScript基本概念
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/10181840.html
Copyright © 2020-2023  润新知