04_项目-基于Docker-K8s的Web集群


原项目:基于Docker Swarm的高可用Web集群

其他项目
https://blog.youkuaiyun.com/cpen_web/category_10833878.html


网络拓扑图

网络拓扑图


项目描述

项目名称:基于Docker-K8s的Web集群
项目环境:Docker 20.10.5,CentOS 7.6 (7台 2核2G),Nginx 1.19.8,Ansible 2.9.18,NFS,Prometheus 2.0.0,Grafana 4.2.0
项目描述:
        实现一个高可用的负载均衡器的Web服务器集群,使用Kubeadm搭建K8s集群,底层采用K8s管理的Docker集群来提供Web服务,大量使用容器来完成Web服务的扩展性、高可用性。
项目步骤:
        1.规划设计整个集群的架构,前端使用Nginx做负载均衡器,后端使用K8s来实现Web容器负载均衡和高可用;
        2.部署好Ansible服务器,在所有的机器之间配置SSH免密通道;编写好部署Nginx,NFS,K8s的脚本,编写Ansible的Playbook实现批量部署;
        3.后端采用K8s来管理整个Docker集群,基于Kubeadm3个节点的K8s集群,总共启动10个容器来提供Web服务;
        4.使用NFS服务为所有的Docker节点提供相同Web数据,实现数据一致性。所有的Docker Nginx容器使用PV,PVC与 数据卷、NFS融合,实现容器Web文件共享;再创建服务,类型为NodePort,达到暴露端口的目的;
        5.使用Prometheus进行K8s集群的监控,使用Grafana成图工具进行数据展示。
项目心得:
        这次实验是对曾经做过的Docker Swarm项目的推倒与重组;通过这次实验,使我在考虑问题和实践操作时更加细心周全,同时对K8s集群项目有了更加直观的了解。

详细步骤

Ansible批量部署

免密通道

ssh-keygen -t ecdsa
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.72		# master
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.73		# node1
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.94		# node2
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.81		# nfs-server
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.79		# load-balancer
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.75		# prometheus

ansible-playbook

yum install epel-release -y
yum install ansible -y
vim /etc/ansible/hosts

[docker-kubeadm]
192.168.2.72
192.168.2.73
192.168.2.94

[nfs]
192.168.2.81
192.168.2.72
192.168.2.73
192.168.2.94

[loadbalancer]
192.168.2.79
vim ansible_playbook.yaml 

- hosts: docker-kubeadm
  remote_user: root
  tasks:
  - name: deploy kubeadm
    script: ~/install_kubeadm.sh

- hosts: loadbalancer
  remote_user: root
  tasks:
  - name: deploy nginx
    script: ~/onekey_install_nginx.sh

- hosts: nfs
  remote_user: root
  tasks:
  - name: install nfs-utils
    script: ~/install_nfs.sh
ansible-playbook ansible_playbook.yaml

脚本 - 使用Kubeadm部署K8s集群

vim install_kubeadm.sh

#!/bin/bash

# 卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

yum install -y yum-utils

yum-config-manager \
            --add-repo \
                http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce docker-ce-cli containerd.io

systemctl start docker
systemctl enable docker

#配置 Docker 使用 systemd 作为默认 Cgroup 驱动
cat <<EOF > /etc/docker/daemon.json
{
   
   
   "exec-opts": ["native.cgroupdriver=systemd"],
   "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"]
}
EOF

#重启docker
systemctl
《基于docker容器的高并发web系统架构设计与实现》随着互联网迅速发展,社交、媒体以及电商等web网站用户数量 越来越大,并发流量也越来越高,这对于传统web系统架构设计提出 新的挑战。本文基于docker容器虚拟化技术来设计实现高并发web系 统架构,实现web系统的高并发、易扩展以及提升系统资源利用均衡 率等功能。 本文基于docker容器以及Kubemetes容器集群技术,从负载均 衡、弹性伸缩以及资源调度等方面设计实现容器化高并发web系统架 构。设计实现基于工作负载特性的动态负载均衡策略,能够实现根据 不同负载类型以及容器集群资源利用率而实时调整容器集群服务的 权重;设计实现基于灰度模型短时间负载预测弹性伸缩策略,能够实 现高效容器集群弹性伸缩以及提升系统并发性能;设计实现基于蚁群 算法并行调度策略,能够有效提升容器集群整体调度效果,提高容器 服务集群的可用性以及改善系统的资源利用均衡率等。 基于docker容器的高并发web系统架构能够实现系统的高并发、 易扩展以及提升系统集群的资源利用率等功能。经过系统测试分析, 基于工作负载特性的动态负载均衡策略比传统轮询、加权轮询策略在 高并发流量下有更好的吞吐量以及响应时间等性能表现,基于灰度模 型预测的弹性伸缩机制比传统KubemetesHPA机制在短时间内具有 更好的集群伸缩特性以及基于蚁群算法的并行容器调度策略比传统 Kubemetesdefaults策略有更高的调度优势,能够有效提升容器的均 匀分发,实现系统高可用性以及提升系统的资源利用均衡率等。 基于docker容器技术高并发web系统架构设计,能够有效解决 当前高并发流量下web系统流量转发、集群伸缩以及资源调度等问 题,对于容器技术的具体应用研究以及高并发系统架构的设计具有一 定的实用价值。 关键词:高并发web系统,容器虚拟化,动态负载均衡,弹性伸 缩,并行资源调度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mycpen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值