CLOUD Day01
一、虚拟化平台搭建
虚拟化技术产品介绍
#黄线标注的,都是比较主流且常用的虚拟化平台。
虚拟化与云计算的关系
虚拟化是一种技术,它允许在单个物理服务器上创建和运行多个虚拟机(VMs),每个虚拟机都有其独立的操作系统和应用程序。这种技术可以提高资源利用率、简化管理和提高安全性,是云计算实现的基础之一
云计算则是一种服务模式,它通过互联网提供计算资源和服务。用户可以根据需要获取这些资源,而无需直接管理底层的硬件。
虚拟化平台搭建
原理:通过在虚拟机中,构建虚拟网桥VBR 与外部网络进行网络通信连接。
环境准备
主机名称 IP地址 配置 ecs 192.168.88.125 2 CPU, 4G mem
# ##################虚拟机 2 cpu,4G运行内存#####################
内核模块管理命令
安装虚拟化平台
验证指令集
[root@ecs ~]# grep -Po "vmx|svm" /proc/cpuinfo vmx vmx
安装虚拟化服务
[root@ecs ~]# dnf install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq [root@ecs ~]# systemctl enable --now libvirtd [root@ecs ~]# lsmod |grep kvm kvm_intel 174841 6 kvm 578518 1 kvm_intel irqbypass 13503 1 kvm [root@ecs ~]# virsh version Compiled against library: libvirt 8.0.0 Using library: libvirt 8.0.0 Using API: QEMU 8.0.0 Running hypervisor: QEMU 6.2.0
创建虚拟网桥
# 官网手册: https://libvirt.org/docs.html [root@ecs ~]# vim /etc/libvirt/qemu/networks/vbr.xml <network> <name>vbr</name> <forward mode='nat'/> <bridge name='vbr' stp='on' delay='0'/> <ip address='192.168.100.254' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.128' end='192.168.100.200'/> </dhcp> </ip> </network> # 创建网桥 [root@ecs ~]# virsh net-define /etc/libvirt/qemu/networks/vbr.xml Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml # 设置开机自启动 [root@ecs ~]# virsh net-autostart vbr Network vbr marked as autostarted # 启动网桥 [root@ecs ~]# virsh net-start vbr Network vbr started # 验证状态 [root@ecs ~]# virsh net-list --all Name State Autostart Persistent ----------------------------------------- vbr active yes yes [root@ecs ~]# ifconfig vbr # 验证
网桥管理命令
命令 命令描述 virsh net-list [--all] 列出虚拟网络 virsh net-start 启动虚拟网络设备 virsh net-destroy 停止虚拟网络设备 virsh net-define 根据 xml 文件创建虚拟网络 virsh net-undefine 删除一个虚拟网络设备 virsh net-edit 修改虚拟网络设备的配置 virsh net-autostart 设置开机自启动
二、云主机创建
创建原理:(以VMvare为例)
#创建虚拟机需要配置,两个目录的文件设置。
##########写实复制###############
#将用户的读写操作分离,读操作直接访问原始盘,写操作通过前端盘拷贝原始盘数据执行。
特点:
克隆磁盘
- 上传真机中的目录下 cirros.qcow2 和 vmbase.xml 到虚拟机中
[root@localhost ]# rsync -av public/{cirros.qcow2,vmbase.xml} 192.168.88.125:/root/
#linux系统中编写好的两个文件,传到虚拟机中。没有的话可以看看操作。
[root@ecs ~]# cp cirros.qcow2 /var/lib/libvirt/images/ [root@ecs ~]# cd /var/lib/libvirt/images/ [root@ecs ~]# qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G [root@ecs ~]# qemu-img info vmhost.img #查看信息
虚拟机配置文件
[root@ecs ~]# vim vmbase.xml 02: <name>vmhost</name> # 必改配置 03: <memory unit="KB">1048576</memory> 04: <currentMemory unit="KB">1048576</currentMemory> 05: <vcpu placement="static">2</vcpu> 25: <source file="/var/lib/libvirt/images/vmhost.img" /> # 必改配置 29: <source bridge="vbr" />
创建虚拟机
[root@ecs ~]# virsh define vmbase.xml [root@ecs ~]# virsh list --all Id Name State ---------------------------------------------------- - vmhost shut off [root@ecs ~]# virsh start vmhost Domain vmhost started [root@ecs ~]# virsh console vmhost # 两次回车 Connected to domain vmhost Escape character is ^] login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root. cirros login:
############下面几个虚拟机管理命令,部署可以多练练############
管理命令(1)
命令 命令描述 virsh list [--all] 列出虚拟机 virsh start/shutdown 启动/关闭虚拟机 virsh destroy 强制停止虚拟机 virsh define/undefine 创建/删除虚拟机 virsh console 连接虚拟机的 console 管理命令(2)
命令 命令描述 virsh edit 修改虚拟机的配置 virsh autostart 设置虚拟机自启动 virsh dominfo 查看虚拟机摘要信息 virsh domiflist 查看虚拟机网卡信息 virsh domblklist 查看虚拟机硬盘信息
三、云计算
特点
可伸缩性、运营效率、访问性和安全性云计算的虚拟化配置,可以增强服务器的安全性,和隔离大部分的物理硬件安全风险。
#虚拟化好比在森林里面穿了吉利服,云平台的使用,就是再此基础上,居住到隐身的房屋一样。
#云计算行业面试会问到
三大服务模式
IaaS: 基础设施服务,Infrastructure-as-a-service
PaaS: 平台服务,Platform-as-a-service
SaaS: 软件服务,Software-as-a-service
三大使用场景
公有云:是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。
私有云:是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。
混合云:是在私有云的基础上,组合其他公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式。
后续课程,我们课程中练习合作的是华为云,所以后续云平台的使用,云主机等等的相关配置都是从华为云出发。(PS: (*^▽^*) 没用过云平台的小伙伴可以了解流程,了解过后类似的云平台产品,你可以自己取货比三家。)
官网下载地址如下:
如果公司有资金支持和搭建服务器需求,或者个人工作需要配置购买相关服务的话,觉得华为云不错。可以从下方网址注册账号后,灵活购买定制服务器需求。
CLOUD Day2
一、华为云服务
注册与使用账号
#其他 腾讯、百度、阿里等平台也是类似从操作。多看看就能懂。
#你个人或者为公司配置的云服务器相关服务项目,都在控制台可以看到。
服务器区域选择
#可以选择离自己工作学习环境比较近的区域。有的时候,服务器
需要下载外国软件,就可以选香港服务器
网络配置
安全组配置
#配置网络防火墙规则,放黑客和默认用户肆意登录
#自己实验练习。可以设成开放全部端口
二、华为云管理
构建云主机
镜像配置
#后续就不用,多次购置云主机下基本软件了,只需要把镜像机配置好,以后用镜像机的配置即可。
测试配置情况
#包年、包月 方式 个人不换算,土豪随意。
#这里为什么要买弹性公网呢?因为个人上网安全隐私需求考虑,绑定公网IP后才可以,在互联网与个人电脑之间自由玩耍
讲完了如何配置和购买云主机相关知识后,进入具体实操环节。
三、华为云案例
首先规划好架构图。
#图中的跳板机,就好比传送门,因为它绑定了弹性公网,既可以作为互联网与本地私有网络的连接入口。又可以在跳板机中远程连接其他云主机。
公有云配置
区域: 同一个区域中的云主机是可以互相连通的,不通区域云主机是不能使用内部网络互相通信的
选择离自己比较近的区域,可以减少网络延时卡顿
华为云yum仓库:https://repo.huaweicloud.com/rockylinux/
#这里使用的是华为云主机自带的YUM仓库
跳板机配置
ansible 管理主机
#用于自动化脚本配置,或作为软件存放仓库
[root@ecs-proxy ~]# dnf install -y ansible-core glibc-langpack-zh [root@ecs-proxy ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: ... ... [root@ecs-proxy ~]# chmod 0400 /root/.ssh/id_rsa [root@ecs-proxy ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.125 [root@ecs-proxy ~]# ansible --version
优化系统配置
[root@ecs-proxy ~]# systemctl stop atd kdump nis-domainname [root@ecs-proxy ~]# dnf remove -y postfix at audit kexec-tools firewalld-* *-firmware unbound-libs [root@ecs-proxy ~]# dnf install -y rsync tree bash-completion lrzsz tar iptables patch ipset time [root@ecs-proxy ~]# echo 'ListenAddress 0.0.0.0' >>/etc/ssh/sshd_config [root@ecs-proxy ~]# sed -ri 's,^(OPTIONS).*,\1="-4u chrony",' /etc/sysconfig/chronyd [root@ecs-proxy ~]# sed 's,^manage_etc_hosts:.*,# &,' -i /etc/cloud/cloud.cfg [root@ecs-proxy ~]# vim /etc/hosts ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 [root@ecs-proxy ~]# reboot
#做了免密、时间同步方面的相关配置,并下载了课程中会使用到的软件
yum仓库原理
代理 Yum 仓库
[root@ecs-proxy ~]# dnf install -y nginx [root@ecs-proxy ~]# vim /etc/nginx/default.d/dnf_proxy.conf resolver 100.125.1.250 100.125.129.250 valid=5 ipv6=off; location ~ ^/rockylinux/(.*)$ { proxy_pass https://repo.huaweicloud.com/rockylinux/$1; } [root@ecs-proxy ~]# systemctl enable --now nginx
私有 Yum 仓库
[root@ecs-proxy ~]# dnf install -y createrepo [root@ecs-proxy ~]# mkdir -p /var/localrepo [root@ecs-proxy ~]# createrepo --update /var/localrepo [root@ecs-proxy ~]# ln -s /var/localrepo /usr/share/nginx/html/
模板配置
#此处开始配置镜像机器
配置 Yum 客户端
[root@ecs-host ~]# rm -f /etc/yum.repos.d/{epel,Rocky-[!ABE]}*
[root@ecs-host ~]# sed -ri 's,https://repo.huaweicloud.com,http://192.168.1.252,' /etc/yum.repos.d/*.repo
[root@ecs-host ~]# vim /etc/yum.repos.d/local.repo
[local_repo]
name=Rocky Linux $releasever - Localrepo
baseurl=http://192.168.1.252/localrepo
enabled=1
gpgcheck=0
[root@ecs-host ~]# dnf makecache
Rocky Linux 8 - AppStream 187 kB/s | 4.8 kB 00:00
Rocky Linux 8 - BaseOS 172 kB/s | 4.3 kB 00:00
Rocky Linux 8 - Extras 105 kB/s | 3.5 kB 00:00
Rocky Linux 8 - Localrepo 2.9 MB/s | 3.0 kB 00:00
Metadata cache created.
优化系统配置
[root@ecs-host ~]# systemctl stop atd kdump nis-domainname [root@ecs-host ~]# dnf remove -y postfix at audit kexec-tools firewalld-* *-firmware unbound-libs [root@ecs-host ~]# dnf install -y rsync tree bash-completion lrzsz tar iptables patch ipset time [root@ecs-host ~]# echo 'ListenAddress 0.0.0.0' >>/etc/ssh/sshd_config [root@ecs-host ~]# sed -ri 's,^(OPTIONS).*,\1="-4u chrony",' /etc/sysconfig/chronyd [root@ecs-host ~]# sed 's,^manage_etc_hosts:.*,# &,' -i /etc/cloud/cloud.cfg [root@ecs-host ~]# vim /etc/hosts ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 [root@ecs-host ~]# dnf clean all [root@ecs-host ~]# poweroff
关机以后把主机系统盘制作为模板
CLOUD DAY3
一、网站部署
架构图设计:
环境准备:
名称 | IP地址 | 配置 |
---|---|---|
nfs | 192.168.1.10 | 1CPU,1G内存 |
web-0001 | 192.168.1.11 | 2CPU,4G内存 |
web-0002 | 192.168.1.12 | 2CPU,4G内存 |
web-0003 | 192.168.1.13 | 2CPU,4G内存 |
部署NFS服务
#这里我用的是,老师准备的软件资源,小伙伴们知道原理即可
# 拷贝网站页面到 NFS 云主机 [root@ecs-proxy s4]# rsync -av public/website.tar.gz 192.168.1.10:/root/ #----------------------------------------------------------------------# # 创建共享目录,并部署网站页面 [root@nfs ~]# mkdir -p /var/webroot [root@nfs ~]# tar -zxf website.tar.gz -C /var/webroot/ # 部署 NFS 服务 [root@nfs ~]# dnf install -y nfs-utils [root@nfs ~]# vim /etc/exports /var/webroot 192.168.1.0/24(rw,no_root_squash) [root@nfs ~]# systemctl enable --now nfs-server.service
部署web服务
#这里用到的是云计算第二阶段,开始学习的ansible 剧本知识,记不清楚的可以,倒回去复习复习
[root@ecs-proxy ~]# mkdir website [root@ecs-proxy ~]# cd website [root@ecs-proxy website]# vim ansible.cfg [defaults] inventory = hostlist host_key_checking = False [root@ecs-proxy website]# vim hostlist [web] 192.168.1.[11:13] [root@ecs-proxy website]# vim web_install.yaml --- - name: web 集群安装 hosts: web tasks: - name: 安装 apache 服务 dnf: name: httpd,php,nfs-utils state: latest update_cache: yes - name: 配置 httpd 服务 service: name: httpd state: started enabled: yes - name: 编辑 fstab 文件,添加 NFS 配置 lineinfile: path: /etc/fstab regexp: '^192.168.1.10:/.*' line: '192.168.1.10:/var/webroot /var/www/html nfs defaults,_netdev,nolock 1 1' create: yes - name: 挂载 NFS shell: cmd: mount /var/www/html # 执行 playbook 完成安装 [root@ecs-proxy website]# ansible-playbook web_install.yaml
二、负载均衡
#负载均衡负责的集群,而弹性公网只适合单一主机的访问
原理:
负载均衡配置
算法选择
#多个选轮训,单个选最少
#通过浏览器访问这个公网地址的info.php
三、Elasticsearch安装部署
架构图解
主机 | IP地址 | 配置 |
---|---|---|
es-0001 | 192.168.1.21 | 最低配置2核4G |
es-0002 | 192.168.1.22 | 最低配置2核4G |
es-0003 | 192.168.1.23 | 最低配置2核4G |
es-0004 | 192.168.1.24 | 最低配置2核4G |
es-0005 | 192.168.1.25 | 最低配置2核4G |
添加软件包
#在跳板机操作哦
# 添加 ELK 软件包到自定义 Yum 仓库 [root@ecs-proxy s4]# rsync -av elk/ /var/localrepo/elk/ [root@ecs-proxy s4]# createrepo --update /var/localrepo
部署 es-0001
[root@es-0001 ~]# vim /etc/hosts 192.168.1.21 es-0001 192.168.1.22 es-0002 192.168.1.23 es-0003 192.168.1.24 es-0004 192.168.1.25 es-0005 [root@es-0001 ~]# dnf install -y elasticsearch [root@es-0001 ~]# vim /etc/elasticsearch/elasticsearch.yml 17: cluster.name: my-es 23: node.name: es-0001 56: network.host: 0.0.0.0 70: discovery.seed_hosts: ["es-0001", "es-0002", "es-0003"] 74: cluster.initial_master_nodes: ["es-0001", "es-0002", "es-0003"] [root@es-0001 ~]# systemctl enable --now elasticsearch # 服务启动成功 [root@es-0001 ~]# curl http://127.0.0.1:9200 { "name" : "es-0001", "cluster_name" : "my-es", "cluster_uuid" : "_na_", "version" : { "number" : "7.17.8", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "120eabe1c8a0cb2ae87cffc109a5b65d213e9df1", "build_date" : "2022-12-02T17:33:09.727072865Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
部署 es-0002
# 验证集群状态失败 [root@es-0002 ~]# curl http://192.168.1.21:9200/_cat/nodes?pretty { "error" : { "root_cause" : [ { "type" : "master_not_discovered_exception", "reason" : null } ], "type" : "master_not_discovered_exception", "reason" : null }, "status" : 503 } # 部署服务 [root@es-0002 ~]# vim /etc/hosts 192.168.1.21 es-0001 192.168.1.22 es-0002 192.168.1.23 es-0003 192.168.1.24 es-0004 192.168.1.25 es-0005 [root@es-0002 ~]# dnf install -y elasticsearch [root@es-0002 ~]# vim /etc/elasticsearch/elasticsearch.yml 17: cluster.name: my-es 23: node.name: es-0002 56: network.host: 0.0.0.0 70: discovery.seed_hosts: ["es-0001", "es-0002", "es-0003"] 74: cluster.initial_master_nodes: ["es-0001", "es-0002", "es-0003"] [root@es-0002 ~]# systemctl enable --now elasticsearch # 验证集群状态 [root@es-0002 ~]# curl http://es-0001:9200/_cat/nodes?pretty 192.168.1.21 16 89 2 0.15 0.06 0.04 cdfhilmrstw * es-0001 192.168.1.22 6 88 61 1.00 0.23 0.08 cdfhilmrstw - es-0002
集群扩容
- 在所有 es 主机安装 Elasticsearch
[root@ecs-proxy ~]# mkdir es [root@ecs-proxy ~]# cd es [root@ecs-proxy es]# vim ansible.cfg [defaults] inventory = hostlist host_key_checking = False [root@ecs-proxy es]# vim hostlist [es] 192.168.1.[21:25] [root@ecs-proxy es]# rsync -av 192.168.1.21:/etc/elasticsearch/elasticsearch.yml elasticsearch.j2 [root@ecs-proxy es]# vim elasticsearch.j2 23: node.name: {{ ansible_hostname }} [root@ecs-proxy es]# vim es_install.yaml --- - name: Elasticsearch 集群安装 hosts: es tasks: - name: 设置 /etc/hosts copy: dest: /etc/hosts owner: root group: root mode: '0644' content: | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 {% for i in groups.es %} {{ hostvars[i].ansible_eth0.ipv4.address }} {{ hostvars[i].ansible_hostname }} {% endfor %} - name: 安装 ES 服务 dnf: name: elasticsearch state: latest update_cache: yes - name: 拷贝配置文件 template: src: elasticsearch.j2 dest: /etc/elasticsearch/elasticsearch.yml owner: root group: elasticsearch mode: '0660' - name: 配置 ES 服务 service: name: elasticsearch state: started enabled: yes [root@ecs-proxy es]# ansible-playbook es_install.yaml [root@ecs-proxy es]# curl http://192.168.1.21:9200/_cat/nodes?pretty 192.168.1.21 32 88 0 0.04 0.01 0.00 cdfhilmrstw * es-0001 192.168.1.22 16 87 0 0.13 0.04 0.01 cdfhilmrstw - es-0002 192.168.1.23 6 86 1 0.64 0.21 0.07 cdfhilmrstw - es-0003 192.168.1.24 18 86 0 0.44 0.13 0.05 cdfhilmrstw - es-0004 192.168.1.25 6 86 1 0.67 0.21 0.07 cdfhilmrstw - es-0005
插件管理
Head插件图例
部署插件页面
#传输的软件包是课堂老师准备的,需要练习的话,可以去官网下载正版。
# 拷贝插件 public/head.tar.gz 到 es-0001 主机 [root@ecs-proxy s4]# rsync -av public/head.tar.gz 192.168.1.21:./ #------------------------------------------------- # 在 es-0001 上安装 web 服务,并部署插件 [root@es-0001 ~]# dnf install -y nginx [root@es-0001 ~]# systemctl enable --now nginx [root@es-0001 ~]# tar zxf head.tar.gz -C /usr/share/nginx/html/
- 通过 ELB 的 8080 端口,发布服务到互联网
认证和代理
[root@es-0001 ~]# vim /etc/nginx/default.d/esproxy.conf location ~* ^/es/(.*)$ { proxy_pass http://127.0.0.1:9200/$1; auth_basic "Elasticsearch admin"; auth_basic_user_file /etc/nginx/auth-user; } [root@es-0001 ~]# dnf install -y httpd-tools [root@es-0001 ~]# htpasswd -cm /etc/nginx/auth-user admin New password: Re-type new password: Adding password for user admin [root@es-0001 ~]# systemctl reload nginx
API原语管理
集群状态查询
# 查询支持的关键字 [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/_cat/ # 查具体的信息 [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/_cat/master # 显示详细信息 ?v [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/_cat/master?v # 显示帮助信息 ?help [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/_cat/master?help # 显示易读格式 ?pretty [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/_cat/master?pretty
创建索引
- 指定索引的名称,指定分片数量,指定副本数量
# 创建 tedu 索引 [root@es-0001 ~]# curl 'http://127.0.0.1:9200/tedu?pretty' \ -X PUT -H 'Content-Type: application/json' -d '{ "settings": { "number_of_shards": 5, "number_of_replicas": 1 } }'
增加数据 [root@es-0001 ~]# curl -XPUT -H "Content-Type: application/json" \ http://127.0.0.1:9200/tedu/teacher/1?pretty -d '{ "职业": "诗人","名字": "李白","称号": "诗仙","年代": "唐" }' 查询数据 [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/tedu/teacher/_search?pretty [root@es-0001 ~]# curl -XGET http://127.0.0.1:9200/tedu/teacher/1?pretty 修改数据 [root@es-0001 ~]# curl -XPOST -H "Content-Type: application/json" \ http://127.0.0.1:9200/tedu/teacher/1/_update -d '{ "doc": {"年代":"公元701"} }' 删除数据 # 删除一条 [root@es-0001 ~]# curl -XDELETE http://127.0.0.1:9200/tedu/teacher/1 # 删除索引 [root@es-0001 ~]# curl -XDELETE http://127.0.0.1:9200/tedu
以上就是云计算 CLOUD模块的前三天内容了。
需要小伙伴们了解,云平台服务器相关服务的购置与使用 。镜像机的制作,ELK 中Elasearch软件的配置(更多内容AI),API 网络查询语句的使用(了解大体用法)。
或许那一天你个人做游戏,或者为公司购置云平台服务器时会用到以上知识,平台不重要,重要的是你知道如何更划算的使用与搭配。根据剧本和云平台的搭配,合理配置云服务器相关服务,提升资源利用效率。