目录
NFS(Network File System,网络文件系统)是一种分布式文件系统,允许计算机客户端将远程NFS服务器共享的目录挂载到本地文件系统中,实现文件的共享和访问。
测试:通过访问负载均衡的弹性公网IP即可以访问我们的网站首页如下
编写Logstash-Input-filter-output模块配置文件
一、项目背景
在现在这样互联网飞速发展的时代,想要部署可以稳定访问的网站,可以借助华为云强大的技术支持,我们能够轻松实现Apache网站的搭建与部署。本项目将结合实战经验,利用华为云搭建跳板机,并使用华为云主机部署NFS服务、WEB服务ELP、Elasticsearch服务、Filebeat插件、Logstash服务以及Kibana等工具和服务,以使用Rocky Linux 8.5 64位系统的基础上搭建一个功能完善的Apache网站。
云计算的优点在于其简单、方便且高效的特性。 通过借助云主机,我们能够快速部署网站,实现稳定可靠的高并发访问。这个项目将向您展示如何利用云计算技术,以最简单的方式搭建出一个稳定、高效的网站,让您的业务在数字化时代中蓬勃发展。
本项目会带你在Linux中配置各种服务,并处理各个服务之间的协调,还有跳板机的制作、还有如何最优购买云主机,如何使用华为云主机的负载均衡
二、环境准备
-
华为云账号与资源准备
- 注册华为云账号并登录控制台。
- 根据项目需求选择并购买云服务器、存储、网络等相关资源。
-
项目核心依赖包
- elasticsearch-7.17.8-x86_64.rpm
- filebeat-7.17.8-x86_64.rpm
- kibana-7.17.8-x86_64.rpm
- logstash-7.17.8-x86_64.rpm
- metricbeat-7.17.8-x86_64.rpm
- 测试网站项目tar包
以上软件包是本项目所使用的软件包,可以去对应官网下载相对版本,如果版本不对应所产生的问题可能就是不对版的原因,所以尽量使用与本项目所写版本一致,关于网站可以自己准备自己想要发布的,也可以通过我的gitee仓库下载测试网站项目,等测试成功以后可以直接替换网站目录即可
gitee仓库地址为:My-ELK-Project: project---tar rpm
-
虚拟私有云VPC的搭建与安全组策略的指定
- 在本项目中,我们需要创建自己的局域网,也就是虚拟私有云VPC。这样我们在云架构部署中所有云主机都可以通过跳板机连接公网,通过跳板机的反向代理转发云主机的YUM请求,这样可以减少公网IP的购买,同时,所有云主机的网络YUM源也得到解决。
虚拟私有云VPC创建:
华为云地址:共建智能世界云底座-华为云
安全组的创建:
安全组实际上就是云主机的防火墙,我们要在云主机上设置安全组策略,来控制互联网用户访问我们所购买的云主机,这种访问规则就是云主的入口规则,出口规则就是我们VPC中的云主机访问互联网则无限制
华为云地址:共建智能世界云底座-华为云
***我们仅需在入口设置规则即可,出口则不需要限制***
Rocky Linux 8.5跳板机与模板机镜像创建与配置
- 在本项目中所有云主机的网络通信、网络YUM源、云主机的安全稳定运行都少不了跳板机的存在,而我们所搭建的云主机可以直接免密使用,并且可以YUM仓库也可以正常使用,这些又都离不开我们所制作的Rocky Linux系统模板机镜像。
主机名 | IP地址 | 主机身份 |
ecs-proxy | 192.168.1.252 | 跳板机 |
ecs-host | 192.168.1.125 | 模板机 |
项目跳板机的创建:
跳板机:跳板机通常用于安全地远程访问内部网络资源,用户通过跳板机再连接到目标服务器,以减少对目标服务器的直接暴露。通过SSH等方式安全访问内部服务器,并配置跳板机的安全策略,确保只有授权用户能够访问。
华为云地址:共建智能世界云底座-华为云
弹性公网IP(与跳板机绑定):
跳板机在我们整个项目中是唯一一个可以直接连接公网的IP,我们创建其他的云主机也都是通过访问跳板机所部署的Nginx反向代理,将在我们搭建的VPC下的云主机访问请求转发到公网。为什么要这样做呢?第一是公网IP地址的稀缺,第二是租用多个公网IP的成本较大,对于一些互联网小公司和我们这样的自营户不太友好,所以跳板机就此产生,为我们解决这些问题。
购买弹性公网IP:
华为云地址:共建智能世界云底座-华为云
跳板机部署配置:
在跳板机上我们需要安装ansible为之后做集群方便,创建公私钥对、优化系统配置、安装Nginx部署反向代理yum仓库等
跳板机的连接:
可以使用远程连接工具进行连接,如果使用命令行终端的方式有可能会断开连接这种,所以最好是使用远程工具连接即可。本项目采用Windterm远程连接工具进行连接如下:
安装Ansible以及免密登录:
[root@ecs-proxy ~] dnf install -y ansible-core #安装ansible
[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 ~] 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
#systemctl stop atd kdump nis-domainname:停止 atd、kdump 和 nis-domainname 服务。这些服务可能不需要在某些服务器上运行,因此可以将它们停止以节省资源。
#dnf remove -y postfix at audit kexec-tools firewalld-* *-firmware unbound-libs:删除指定的软件包。这些软件包可能不需要在某些服务器上安装,因此可以将它们删除以节省磁盘空间。
#dnf install -y rsync tree bash-completion lrzsz tar iptables patch ipset time:安装指定的软件包。这些软件包可能对服务器的管理和功能有用,因此可以将它们安装到服务器上。
#echo 'ListenAddress 0.0.0.0' >>/etc/ssh/sshd_config:将 "ListenAddress 0.0.0.0" 添加到 sshd_config 文件中。这将允许 SSH 服务监听所有 IP 地址,而不仅仅是本地回环地址。
#sed -ri 's,^(OPTIONS).*,\1="-4u chrony",' /etc/sysconfig/chronyd:使用 sed 命令修改 chronyd 配置文件。这将更改 OPTIONS 配置项,使其仅监听 IPv4 地址。
#sed 's,^manage_etc_hosts:.*,# &,' -i /etc/cloud/cloud.cfg:使用 sed 命令修改 cloud.cfg 文件。这将注释掉 manage_etc_hosts 配置项,以防止 cloud-init 在启动时自动管理 /etc/hosts 文件。
#vim /etc/hosts: 删掉不需要的域名解析
#reboot: 有些配置重启才有效
使用Nginx创建反向代理:
[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 ~] s