zoukankan      html  css  js  c++  java
  • virt-install创建虚拟机并制作成模板

    一、使用virt-install创建新的虚拟机

    virt-install --name CentOS7.6-template --ram 2048 --vcpu=2 --virt-type kvm --cdrom=/Data/kvm/iso/CentOS-7.6-x86_64-DVD-1810.iso 
    --disk /Data/kvm/img/test/CentOS7.6-template.qcow2,size=50,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    
    # 命令解释:
    --name                # 虚拟机名称,需全局惟一
    --ram                 # 虚拟机内在大小,单位为MB
    --vcpu                # VCPU个数及相关配置
    --virt-type               # 使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用virsh capabilities命令获取;
    --cdrom                # 光盘安装介质
    --disk /Data/kvm/img/test/CentOS7.6-template.qcow2,size=50,bus=virtio               # 指定存储设备及其属性
    --network bridge=br1        # 将虚拟机连入宿主机的网络中
    --graphics vnc,listen=0.0.0.0   # 使vnc可以连接
    --noautoconsole           # 禁止自动连接至虚拟机的控制台

    使用命令创建完成之后,查到vnc端口是5901,如果是第一次安装默认是5900

     使用vnc连接并安装系统

     为统一网卡的名称为eth0所以要进行如下配置:

    1. 选择“Install Centos 72. 按Tab,打开kernel启动选项后,增加 net.ifnames=0 biosdevname=0

     方案一:系统磁盘大小50G;最小化安装配置,磁盘分区因为是虚拟机,为了不影响性能,只创建/根分区,不创建SWAP分区

     方案二:系统磁盘大小20G;再按需求挂载数据盘到系统的/Data目录下;

    二、系统层面初始化配置

    2.1 安装完成之后启动虚拟机,先通过vnc连接

    virsh start CentOS7.6-template

    2.2 连接上之后启动服务serial-getty@ttyS0.service,以便宿主机能使用console命令连接

    systemctl start serial-getty@ttyS0.service
    systemctl enable serial-getty@ttyS0.service

    2.3 关闭firewalld和NetworkManager服务

    systemctl stop firewalld
    systemctl stop NetworkManager
    systemctl disable firewalld
    systemctl disable NetworkManager

    2.4 禁用SELinux服务

    setenforce 0
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

    2.5 配置网卡和DNS信息,ifcfg-eth0只保留如下几行,一定要删除UUID,或者手动指定IP需要时再进行替换

    # 配置网卡信息
    cat
    /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes

    # 配置DNS
    cat /etc/resolv.conf
    nameserver 114.114.114.114
    nameserver 223.5.5.5

    # 修改主机名
    hostnamectl set-hostname 192-168-5-29

    2.6 配置epel源安装常用软件

    rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    yum install -y net-tools vim lrzsz tree screen lsof tcp wget tcpdump nc mtr nmap openssl-devel ntpdate glances bash-completion psmisc

    2.7 配置文件描述符数量

    echo "* soft nofile 65535" >> /etc/security/limits.conf
    echo "* hard nofile 65535" >> /etc/security/limits.conf
    echo "* soft nproc 65535" >> /etc/security/limits.conf
    echo "* hard nproc 65535" >> /etc/security/limits.conf

    2.8 设置记录历史命令

    echo 'export HISTTIMEFORMAT=" %F %T `whoami` "' >> /etc/profile
    source /etc/profile

    2.9 如果内网没有ntpd服务可以同步公网的时间

    crontab -e
    */5 * * * * /usr/sbin/ntpdate time1.aliyun.com

    2.10 可以配置一些内核参数的优化,参见链接

    https://www.cnblogs.com/cyleon/p/10309969.html
    cat /etc/sysctl.conf 
    # 表示套接字由本端要求关闭,这个参数决定了它保持在FIN-wAIT-2状态的时间,默认值是60秒,建议调整为2,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_fin_timeout 60
    net.ipv4.tcp_fin_timeout = 2
    
    # 表示开启TCP链接中TIME_WAIT sockets的快速回收,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_recycle,默认为0 表示关闭,不建议开>启,因为nat网络问题
    net.ipv4.tcp_tw_reuse = 1
    
    # reuse和recycle这俩个参数是为防止生产环境下web,squid等业务服务器time_wait网络状态数量过多设置的
    net.ipv4.tcp_tw_recycle = 0
    
    #表示开启SYN Cookies功能,当出现SYN等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syscookies,默认为1,表示开启
    net.ipv4.tcp_syncookies = 1
    
    # 关闭ipv6
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    
    # 避免放大攻击
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
    #允许系统打开的端口范围,不建议从1024开始,因为某些端口会存在10000以内。一般情况下已够用。
    net.ipv4.ip_local_port_range = 10000    65000

    2.11 允许root可以ssh登录

    # 打开允许root允许ssh登录
    sed -i 's##PermitRootLogin yes#PermitRootLogin yes#g' /etc/ssh/sshd_config 
    
    # 安全配置可设置hosts.all和hosts.deny
    cat /etc/hosts.allow
    ##IDC LAN ip
    sshd:192.168.5.0/255.255.255.0
    sshd:10.0.0.1/255.255.255.0
    
    cat /etc/hosts.deny
    sshd:all
    
    # 重启sshd服务
    systemctl restart sshd

    2.12 修改缓存、清理历史命令

    yum clean all
    yum makecache
    history -c

    2.13 将ansible的公钥推入模板中

    [root@ansible ~]# ssh-copy-id -i .ssh/id_dsa.pub root@192.168.5.29

    2.14 最后关机做成模板

    三、使用模板创建虚拟机

    可以制作多个不同的模板,按业务环境需求,直启动。

    或者模板创建完成之后再使用salt-stack或ansible按需求进行初始化配置。

    cp /Data/kvm/img/test/CentOS7.6-template.qcow2 /Data/kvm/img/test/node-192.168.5.90-test.qcow2
    virt-install --name node-192.168.5.90-test --ram 4096 --vcpu=2 --virt-type kvm --disk /Data/kvm/img/test/node-192.168.5.90-test.qcow2,bus=virtio --network bridge=br1,model=virtio --import --noautoconsole
  • 相关阅读:
    中国剩余定理(普通+扩展)
    因子和(洛谷P1593)——约数和+分解质因数
    暑假考试题6:problem 题(Catlan + dp + 组合数)
    暑假考试题6:single 单(树上推理)
    暑假考试题5:tree 最小生成树(最小生成树+倍增)
    暑假考试题5:序列(分类讨论水题)
    暑假考试题5:工作 work(贪心+二分)
    暑假考试题4:砍树 cut(整除分块)
    4.8 作业
    面向对象编程
  • 原文地址:https://www.cnblogs.com/cyleon/p/11470051.html
Copyright © 2011-2022 走看看