首页 文章 精选 留言 我的

精选列表

搜索[部署],共10000篇文章
优秀的个人博客,低调大师

网络监控系统的建立及部署

一个依赖互联网站点生存的企业,是不会对他的生存之本疏忽大意的,而企业的本性又是追求利润的最大化,所以在硬件,软件方面的投入又是锱铢必较。我们这些运维人员是在力求软硬件性能最大化的同时保证业务的正常运转。这次我们从企业利润最大化角度构建一套让站点基础硬件及基础软件平稳运行的监控系统。 我们以一个简易网站架构为例(网站架构图来自51CTO的weizhenguo的博客)来解析在应用架构之下的监控体系如何建立的。 我们分析一下整个架构图的数据流向: 互联网的访问数据通过防火墙的80端口进入,在web防火墙端对SQL注入攻击,跨站攻击等数据进行一次过滤,真正的访问数据流经过负载均衡组(一个节点容易产生单点故障)把流量分配给主应用服务器区的负载均衡web组(这里应该有缓冲集群,静态文件集群和动态web服务器集群),动态web服务器调用数据库集群(我们常说的主从<一主多从,多主多从等>)的数据来响应用户。这是主体站点,当然为了安全起见,又有日志监控服务器,入侵监测系统,为了网站依然被攻破的情况下,有应急措施,在生产环境的交换机下又挂接了一个防火墙,防火墙后面是一直运行并且和生产环境保持同步的备份机。 好,我们把应用业务分析完毕,怎么去查看每个设备的实时状态呢,比如说防火墙的session数,负载均衡器的硬件利用率,交换机的带宽,单台应用服务器的内存使用率,I/o情况等。这就需要我们建立一套完整的监控系统,让我们运维人员随时了解服务器的喜怒哀乐,灵活的提醒方式更给我们的运维安心和舒畅的心情。^_^,我们开始介绍目前业界流行的监控体系:cacti+nagios构建的全方位监控体系。 我们采用分而治之的方式来分别介绍这个庞大的体系:首先介绍cacti,然后介绍nagios,然后介绍他们的结合点的搭建。 Cacti(http://www.cacti.net/): Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。他的工作原理是这样的:Net-snmp定时采集数据并把传送给RRDtool,当用户查询某台具体设备的流量时,cacti查找该设备对应的rra文件名称,然后RRDtool绘制图形,cacti把图形展示给客户。 Net-snmp定时采集数据存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。 由于Cacti是基于php开发,且用到mysql数据库,展示用apache服务器,看来一套LAMP基础环境的安装我们是逃不过去了。下面我们就介绍LAMP环境的安装: LAMP的环境需要的软件 yum install -y gcc gcc-c++ glibc glibc-devel glibc-common autoconf automake libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel gd gd-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel openssl openssl-devel libart_lgpl-devel 一.rpm安装 yum install -y mysql mysql-server mysql-devel httpd php php-mysql 开启服务: [root@listen html]# service httpd restart [root@listen html]# service mysqld restart 我们为Mysql设置密码:[root@listen cacti]# mysqladmin -uroot password zhenglang0813 [root@listen html]# chkconfig httpd on [root@listen www]# chkconfig mysqld on 我们开始安装net-snmp: [root@listen yum.repos.d]# yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils php-snmp 我们开始安装RRDtool这个绘图软件: [root@listen www]# cd /etc/yum.repos.d/ [root@listen yum.repos.d]# vi dag.repo [dag] name=Dag RPM Repository for Red Hat Enterprise Linux baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt enabled=1 [root@listen yum.repos.d]# yum install rrdtool perl-rrdtool 好,我们到此为止还只有Cacti没有安装,我们现在就来安装他: Cacti的下载及安装: [root@listen ~]# wget -chttp://www.cacti.net/downloads/cacti-0.8.7e.tar.gz [root@listen ~]# tar zxvf cacti-0.8.7e.tar.gz [root@listen ~]# mv cacti-0.8.7e /var/www/html/cacti [root@listen ~]# cd /var/www/html/cacti [root@listen cacti]# chown -R root:root ./* 我们需要创建cacti数据库: [root@listen cacti]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.0.77 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql&gt; create database cacti; Query OK, 1 row affected (0.00 sec) mysql&gt; \q Bye You have new mail in /var/spool/mail/root 然后我们用/var/www/html/cacti目录中的cacti.sql来创建表和其中的字段等。 [root@listen cacti]# mysql -uroot -p cacti <cacti.sql Enter password: [root@listen cacti]# 下面我们创建一个数据库用户cactiuser并让他对cacti数据库拥有所有的权限。 mysql> grant all on cacti.* to cactiuser@localhost identified by "zhenglang0813"; Query OK, 0 rows affected (0.00 sec) mysql&gt; flush privileges; Query OK, 0 rows affected (0.00 sec) mysql&gt; quit; 下面我们需要更改/var/www/html/cacti下面两个文件进行修改,以使php能够链接到数据库上。 [root@listen cacti]# pwd /var/www/html/cacti [root@listen cacti]# cd include [root@listen include]# vi config.php 找到这一项并修改成如下密码:$database_password = "zhenglang0813"; [root@listen include]# vi global.php 找到这一项并修改成如下密码:$database_password = "zhenglang0813"; 到目前为止,我们的安装算是告一段落,下面我们建立任务调度,这样才能使得net-snmp定期采集数据并放到rrdtool下面去 [root@listen include]# crontab -e */5 * * * * php /var/www/html/cacti/poller.php &gt;/dev/null 2&gt;&1 ----表明5分钟采集一次数据 [root@listen include]# crontab -l 我们查看刚才的任务计划 接下来我们做的就是初始化Cacti,好,我们现在就开始:http://192.168.0.88/cacti访问如上链接会看到如下画面: 我们点击NEXT进入下一页面:我们选择“New Install” 然后进入如下页面:图中显示为Cacti寻找出来的各种组件的路径,假如有红色标注的,说明没有找到,这时我们可以查看组件是否安装,以及路径是否正确。当然假如你是按照我操作的步骤的话,那就没有什么问题, 好,我们点击finish,进入如下页面: 这是Cacti的默认用户名和密码填写处,默认用户名密码为:admin/admin: 填入之后Cacti强制我们修改密码,那我们就修改为:zhenglang0813,到此cacti的庐山真面目算是呈现在我们面前: 在介绍怎么使用Cacti之前,我们还需要修改一处:点击左侧的Settings,选择:RRDTool Utility Version的版本为“RRDtool 1.3.x”,因为我们安装的RRDtool组件是1.4的,我们只能在Cacti中选择最靠近这个版本的,不然不能绘制图形。 接下来我们开始介绍Cacti的使用方法: 本文转自guoli0813 51CTO博客,原文链接:http://blog.51cto.com/guoli0813/343131,如需转载请自行联系原作者

优秀的个人博客,低调大师

Dockerfile构建LNMP分离环境部署wordpress

最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题。在单台上面的架构如下;(往后我们也是要讲到compose和swarm调度的慢慢来) 1、首先我们先安装一下docker,好多人都发现国内用yum安装有各种问题;这里我们用国内的https://www.daocloud.io.登录后注册,然后点击下载。里面有提示,我们点击Linxu安装然后复制代码执行到shell上即可。 1 [root@testnginx]#curl-sSLhttps://get.daocloud.io/docker|sh 2、安装好之后,安装dockhub加速器,点击加速器,复制代码粘贴到shell. 1 2 3 4 5 6 [root@testnginx]#curl-sSLhttps://get.daocloud.io/daotools/set_mirror.sh|sh-shttp://681a96df.m.daocloud.io {"registry-mirrors":["http://681a96df.m.daocloud.io"], "live-restore":true } Success. Youneedtorestartdockertotakeeffect:sudosystemctlrestartdocker ##执行脚本,主要是把仓库地址写到daemon.json文件下。 1 2 3 4 [root@testnginx]#cat/etc/docker/daemon.json {"registry-mirrors":["http://681a96df.m.daocloud.io"], "live-restore":true } 3、准备工作都已经完成了,接下来我们来构建一下dockerfile在三个目录下,看下目录结构: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@testtest]#tree-L2--charsetASCII |--mysql ||--Dockerfile ||--epel-6.repo ||--my.cnf |`--startup.sh |--nginx ||--Dockerfile ||--nginx-1.11.10 ||--nginx-1.11.10.tar.gz ||--nginx.conf |`--nginx_default.conf `--php-fpm |--Centos-6.repo |--Dockerfile |--epel-6.repo |--php-5.5.38 `--php-5.5.38.tar.gz 5、看一下nginx 的 Dockerfile: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@testnginx]#catDockerfile #lnmpcentos6.0 fromcentos:centos6 MAINTAINERxiaoluo< xiaoluo @test.com> ENVAPP_DIR/web addnginx-1.11.10/nginx-1.11.10 RUNyum-ygroupinstall"DevelopmentTools""ServerPlatformDeveopment" RUNyum-yinstallopenssl-develpcre-devel RUNuseraddnginx-s/sbin/nologin RUNcd/nginx-1.11.10&&./configure--prefix=/usr/local/nginx--user=nginx--group=nginx--with-http_ssl_module--with-http_flv_module--with-http_stub_status_module--with-http_gzip_static_module--with-pcre&&make&&makeinstall RUNmkdir/usr/local/nginx/conf/vhosts RUNmkdir/var/log/nginx ADDnginx.conf/usr/local/nginx/conf/nginx.conf ADDnginx_default.conf/usr/local/nginx/conf/vhosts/default.conf EXPOSE80 CMD["/usr/local/nginx/sbin/nginx"] ##nginx 相关php配置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@testnginx]#catnginx_default.conf server{ listen80default_server; server_namelocalhost; #charsetkoi8-r; location/{ root/web; indexindex.phpindex.htmlindex.htm; } #redirectservererrorpagestothestaticpage/50x.html # error_page500502503504/50x.html; location=/50x.html{ rootAPP_DIR; } #Disablenginxlogwritefavicon.ico location=/favicon.ico{ log_not_foundoff; access_logoff; } #passthePHPscriptstoFastCGIserverlisteningonport9000 # location~\.php${ root/web; fastcgi_passphp:9000; #fastcgi_passunix:/tmp/php-fpm.sock; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; includefastcgi_params; } } ###php:9000是通过后面的--link 容器之间互联指定 6、开始构建nginx镜像: [root@test nginx]# docker build -t lnmp/nginx:1.0 . ##查看是否生成镜像: 1 2 3 [root@testnginx]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE lnmp/nginx1.05f5d4169189d4minutesago669MB 7、开始构建php镜像: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@testphp-fpm]#catDockerfile fromcentos:centos6 ADDCentos-6.repo/etc/yum.repos.d/CentOS-Base.repo ADDepel-6.repo/etc/yum.repos.d/epel.repo addphp-5.5.38/php-5.5.38 RUNyum-ygroupinstall"DesktopPlatformDevelopment" RUNyum-yinstalllibmcrypt-develbzip2-develgccopenssl-develphp-mcryptlibmcrypt RUNcd/php-5.5.38&&./configure--prefix=/usr/local/php--with-mysql=mysqlnd--with-pdo-mysql=mysqlnd--with-mysqli=mysqlnd--with-openssl--enable-mbstring--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--enable-sockets--with-mcrypt--with-bz2--enable-fpm--with-gd&&make&&makeinstall RUNcp/php-5.5.38/php.ini-production/usr/local/php/etc/php.ini RUNmv/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf RUNuseradd-M-s/sbin/nologinphp RUNsed-i-e's\;pid=run/php-fpm.pid\pid=run/php-fpm.pid\g'-e's\nobody\php\g'-e's\listen=127.0.0.1:9000\listen=0.0.0.0:9000\g'/usr/local/php/etc/php-fpm.conf RUNsed-i's\;daemonize=yes\daemonize=no\g'/usr/local/php/etc/php-fpm.conf EXPOSE9000 CMD["/usr/local/php/sbin/php-fpm"] 8、开始构建php镜像: 1 [root@testphp-fpm]#dockerbuild-tlnmp/php:1.0. 9、构建mysql镜像的Dockerfile: 1 2 3 4 5 6 7 8 [root@testmysql]#catDockerfile FROMcentos:centos6 MAINTAINERxiaoluo"18878774@163.com" RUNyuminstall-ymysql-servermysql ADD./startup.sh/opt/startup.sh RUNchmod+x/opt/startup.sh EXPOSE3306 CMD["/bin/bash","/opt/startup.sh"] ##启动脚本: 1 2 3 4 5 6 7 8 9 10 11 [root@testmysql]#catstartup.sh #!/bin/bash if[!-f/var/lib/mysql/ibdata1];then mysql_install_db /usr/bin/mysqld_safe& sleep10s mysql-e"grantallprivilegeson*.*to'root'@'%'identifiedby'123456';FLUSHPRIVILEGES;" killallmysqld sleep10s fi /usr/bin/mysqld_safe **正常启动的时候,是没有问题的;当时当我们用-v做持久化的时候,好像说用户就失去对/var/lib/mysql的控制权,所以启动的时候我们要判断初始化才可以用-v来持久化相关目录,这个地方之前搞了好久就是挂不起来,后面原来是这个地方。 10、开始构建mysql镜像: 1 [root@testmysql]#dockerbuild-tlnmp/mysql:1.0. 11、下面我们开始启动相关容器: 1 2 3 [root@testweb]#dockerrun-dit--namephp-v/web:/weblnmp/php:1.0 [root@testweb]#dockerrun-dit--nameweb-p80:80-v/web:/web--linkphp:phplnmp/nginx:1.0 [root@testweb]#dockerrun-dit--namemysql-p3306:3306-v/opt/data:/var/lib/mysqllnmp/mysql:1.0 ##### 1 2 3 4 5 [root@testmysql]#dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 3527cddb4c50lnmp/mysql:1.0"/bin/bash/opt/st..."4secondsagoUp3seconds0.0.0.0:3306->3306/tcpmysql fab93953c438lnmp/nginx:1.0"/usr/local/nginx/..."AboutaminuteagoUpAboutaminute0.0.0.0:80->80/tcpweb d5854337c10blnmp/php:1.0"/usr/local/php/sb..."3minutesagoUp2minutes9000/tcpphp ##可以看到我们已经都启动了所有的容器了。 12、接下来我们登录一下mysql.创建一下wordpress使用的数据库: 1 2 3 [root@testmysql]#mysql-uroot-p123456-h192.168.63.200 MySQL[(none)]>CREATEDATABASEwordpressDEFAULTCHARACTERSETutf8; QueryOK,1rowaffected(0.00sec) 13、然后我们把wordpress代码放到我们挂载的本地/web目录下面: [root@test web]# wget https://cn.wordpress.org/wordpress-4.7.2-zh_CN.tar.gz #然后解压出来。我们直接访问一下当前主机的IP地址: 直接往下走注册即可: ##到此在Docker 分离下安装wordpress已经完成,但是我们要思考一个问题,就是有没有更好的方法统一编排一下这些容器呢,给容器更好的分组管理:可以留意一下docker-compose,在1.13之后更是结合栈来实现跨主机编排。(docker-compose:文章http://xiaoluoge.blog.51cto.com/9141967/1902816) ##还有一个就是如何给这些容器做成集群管理,保证节点的高可用。和资源监控调度呢。可以看一下1.12之后的docker swarm,构建集群非常简单。 Docker详情与集群架构部分可以查看:http://www.roncoo.com/course/view/3e9d9c48f76f4c698b8349d04b763467 附件:http://down.51cto.com/data/2366471 本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1902501,如需转载请自行联系原作者

优秀的个人博客,低调大师

centos+k8s+docker部署

一、环境 centos7, 主机: master: 主机名k8s-master, ip: 192.168.1.130 node1: 主机名k8s-node-1, ip:192.168.1.132 master和node的/etc/hosts都是如下配置 cat /etc/hosts 192.168.1.130 k8s-master 192.168.1.130 etcd 192.168.1.130 registry 192.168.1.132 k8s-node-1 192.168.1.133 k8s-node-2 master执行 # systemctl stop firewalld # systemctl disable firewalld # setenforce 0 1.使用yum安装etcd和kubernetes-master #yum-yinstalletcdkubernetes-master 2..编辑/etc/etcd/etcd.conf文件 ETCD_NAME=default ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS=" ETCD_ADVERTISE_CLIENT_URLS=" 3.编辑/etc/kubernetes/apiserver文件 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers= KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"KUBE_API_ARGS="" 4.启动etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服务,并设置开机启动 #forSERVICESinetcdkube-apiserverkube-controller-managerkube-scheduler;dosystemctlrestart$SERVICES;systemctlenable$SERVICES;systemctlstatus$SERVICES;done 5.在etcd中定义flannel网络 #etcdctlmk/atomic.io/network/config'{"Network":"172.17.0.0/16"}' 安装配置KubernetesNode 1.使用yum安装flannel和kubernetes-node #yum-yinstallflannelkubernetes-node 2.为flannel网络指定etcd服务,修改/etc/sysconfig/flanneld文件 FLANNEL_ETCD=" 3.修改/etc/kubernetes/config文件 KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master= 4.按照如下内容修改对应node的配置文件/etc/kubernetes/kubelet KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_PORT="--port=10250" KUBELET_HOSTNAME="--hostname-override=192.168.1.132"#修改成对应Node的IP KUBELET_API_SERVER="--api-servers=http://192.168.30.20:8080"#指定Master节点的APIServerKUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" KUBELET_ARGS="" 5.在所有Node节点上启动kube-proxy,kubelet,docker,flanneld等服务,并设置开机启动。 #forSERVICESinkube-proxykubeletdockerflanneld;dosystemctlrestart$SERVICES;systemctlenable$SERVICES;systemctlstatus$SERVICES;done 验证集群是否安装成功在master上执行如下命令 #kubectlgetnode 本文转自小白的希望 51CTO博客,原文链接:http://blog.51cto.com/haoyonghui/1961418,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册