首页 文章 精选 留言 我的

精选列表

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

Centos6.5搭建smokeping服务

1.安装所需软件包。 yuminstall-yperlperl-Net-Telnetperl-Net-DNSperl-LDAPperl-libwww-perlperl-IO-Socket-SSLperl-Socket6perl-Time-HiResperl-ExtUtils-MakeMakerrrdtoolrrdtool-perlcurlhttpdhttpd-develgccmakewgetlibxml2-devellibpng-develglibpangopango-develfreetypefreetype-develfontconfigcairocairo-devellibart_lgpllibart_lgpl-develpoptpopt-devellibidnlibidn-devel 2.创建一个放置软件包的常用目录。 mkdir/smokeping/tools–p 3.下载fping软件包,并且解压,编译安装。 wgethttp://fping.org/dist/fping-3.10.tar.gz tar-zxvffping-3.10.tar.gz cdfping-3.10/ ./configure make&&makeinstall cd.. 4.下载echoping并且解压,编译安装。 wgethttp://fossies.org/linux/misc/old/echoping-6.0.2.tar.gz tar-zxvfechoping-6.0.2.tar.gz cdechoping-6.0.2/ ./configure make&&makeinstall 5.下载smokeping并且解压,编译安装。 wgethttp://oss.oetiker.ch/smokeping/pub/smokeping-2.6.9.tar.gz tar-zxvfsmokeping-2.6.9.tar.gz cdsmokeping-2.6.9/ ./setup/build-perl-modules.sh/usr/local/smokeping/thirdparty ./configure--prefix=/usr/local/smokeping gmakeinstall 6.创建三个文件目录和一个日志文件,并且设置属主和属组均为apache。 cd/usr/local/smokeping/ mkdir{cache,data,var} touch/var/log/smokeping.log chownapache.apache/var/log/smokeping.log chmod600/usr/local/smokeping/etc/smokeping_secrets.dist chown-Rapache.apachedata/ chown-Rapache.apachevar/ chown-Rapache.apachecache/ 7.修改相应的配置文件。 cd/usr/local/smokeping/htdocs/ mvsmokeping.fcgi.distsmokeping.fcgi cd/usr/local/smokeping/etc/ mvconfig.distconfig 8.配置apache配置文件和smokeping的配置文件。 在/etc/httpd/conf/httpd.con末尾添加以下加行: Alias/cache"/usr/local/smokeping/cache/" Alias/cropper"/usr/local/smokeping/htdocs/cropper/" Alias/smokeping"/usr/local/smokeping/htdocs/smokeping.fcgi" <Directory"/usr/local/smokeping"> AllowOverrideNone OptionsAll AddHandlercgi-script.fcgi.cgi Orderallow,deny Allowfromall DirectoryIndexsmokeping.fcgi </Directory> smokeping配置文件如下所示: cat/usr/local/smokeping/etc/config ***General*** owner=PeterRandom contact=some@address.nowhere mailhost=my.mail.host sendmail=/usr/sbin/sendmail #NOTE:donotputtheImageCachebelowcgi-bin #sinceallfilesundercgi-binwillbeexecuted...thisisnot #goodforp_w_picpaths. imgcache=/usr/local/smokeping/cache imgurl=cache datadir=/usr/local/smokeping/data piddir=/usr/local/smokeping/var cgiurl=http://10.104.96.155/smokeping.cgi smokemail=/usr/local/smokeping/etc/smokemail.dist tmail=/usr/local/smokeping/etc/tmail.dist #specifythistogetsysloglogging syslogfacility=local0 #eachprobeisnowruninitsownprocess #disablethistoreverttotheoldbehaviour #concurrentprobes=no ***Alerts*** to=alertee@address.somewhere from=smokealert@company.xy +someloss type=loss #inpercent pattern=>0%,*12*,>0%,*12*,>0% comment=loss3timesinarow ***Database*** step=300 pings=20 #consfnmrhbstepstotal AVERAGE0.511008 AVERAGE0.5124320 MIN0.5124320 MAX0.5124320 AVERAGE0.5144720 MAX0.5144720 MIN0.5144720 ***Presentation*** template=/usr/local/smokeping/etc/basepage.html.dist charset=utf-8 +charts menu=Charts title=Themostinterestingdestinations ++stddev sorter=StdDev(entries=>4) title=TopStandardDeviation menu=StdDeviation format=StandardDeviation%f ++max sorter=Max(entries=>5) title=TopMaxRoundtripTime menu=byMax format=MaxRoundtripTime%fseconds ++loss sorter=Loss(entries=>5) title=TopPacketLoss menu=Loss format=PacketsLost%f ++median sorter=Median(entries=>5) title=TopMedianRoundtripTime menu=byMedian format=MedianRTT%fseconds +overview width=600 height=50 range=10h +detail width=600 height=200 unison_tolerance=2 "Last3Hours"3h "Last30Hours"30h "Last10Days"10d "Last400Days"400d #+hierarchies #++owner #title=HostOwner #++location #title=Location ***Probes*** +FPing binary=/usr/local/sbin/fping ***Slaves*** secrets=/usr/local/smokeping/etc/smokeping_secrets.dist +boomer display_name=boomer color=0000ff +slave2 display_name=another color=00ff00 ***Targets*** probe=FPing menu=Top title=NetworkLatencyGrapher remark=WelcometotheSmokePingwebsiteofxxxCompany.\ Hereyouwilllearnallaboutthelatencyofournetwork. +Test menu=Targets #parents=owner:/Test/Jameslocation:/ ++James menu=James title=James alerts=someloss slaves=boomerslave2 host=james.address ++MultiHost menu=Multihost title=JamesandJamesasseenfromBoomer host=/Test/James/Test/James~boomer ++Localhost menu=Localhost title=Localhost alerts=someloss #slaves=boomerslave2 host=10.104.96.155 +Other menu=网络及节点监控 title=监控统计 ++dianxin menu=电信网络监控 title=电信网络监控列表 host=/Other/dianxin/dianxin-bj/Other/dianxin/dianxin-sh/Other/dianxin/dianxin-gz/Other/dianxin/dianxin-sz/Other/dianxin/dianxin-tj/Other/dianxin/dianxin-sy/Other/dianxin/dianxin-xa/Other/dianxin/dianxin-jn/Other/dianxin/dianxin-cd/Other/dianxin/dianxin-hf/Other/dianxin/dianxin-wh/Other/dianxin/dianxin-zz/Other/dianxin/dianxin-cs/Other/dianxin/dianxin-nj/Other/dianxin/dianxin-hz/Other/dianxin/dianxin-xm/Other/dianxin/dianxin-nn/Other/dianxin/dianxin-ty/Other/dianxin/dianxin-cc/Other/dianxin/dianxin-lz/Other/dianxin/dianxin-nn/Other/dianxin/dianxin-xn/Other/dianxin/dianxin-hk/Other/dianxin/dianxin-fz/Other/dianxin/dianxin-gy/Other/dianxin/dianxin-km/Other/dianxin/dianxin-xj/Other/dianxin/dianxin-xz/Other/dianxin/dianxin-heb/Other/dianxin/dianxin-hhht +++dianxin-bj menu=北京电信 title=北京电信 alerts=someloss host=106.37.232.114 +++dianxin-sh menu=上海电信 title=上海电信 alerts=someloss host=202.96.209.133 +++dianxin-gz menu=广州电信 title=广州电信 alerts=someloss host=219.137.229.134 +++dianxin-sz menu=深圳电信 title=深圳电信 alerts=someloss host=202.96.154.15 +++dianxin-tj menu=天津电信 title=天津电信 alerts=someloss host=219.150.32.132 +++dianxin-sy menu=沈阳电信 title=沈阳电信 alerts=someloss host=219.148.204.66 +++dianxin-xa menu=西安电信 title=西安电信 alerts=someloss host=117.35.68.4 +++dianxin-jn menu=济南电信 title=济南电信 alerts=someloss host=219.146.0.253 +++dianxin-cd menu=成都电信 title=成都电信 alerts=someloss host=61.139.2.69 +++dianxin-hf menu=合肥电信 title=合肥电信 alerts=someloss host=220.178.75.134 +++dianxin-wh menu=武汉电信 title=武汉电信 alerts=someloss host=221.232.129.35 +++dianxin-zz menu=郑州电信 title=郑州电信 alerts=someloss host=123.52.19.15 +++dianxin-cs menu=长沙电信 title=长沙电信 alerts=someloss host=202.103.96.253 +++dianxin-nj menu=南京电信 title=南京电信 alerts=someloss host=218.2.135.1 +++dianxin-hz menu=杭州电信 title=杭州电信 alerts=someloss host=202.96.96.68 +++dianxin-xm menu=厦门电信 title=厦门电信 alerts=someloss host=202.101.103.54 +++dianxin-nn menu=南宁电信 title=南宁电信 alerts=someloss host=202.103.225.254 +++dianxin-ty menu=太原电信 title=太原电信 alerts=someloss host=59.49.77.1 +++dianxin-cc menu=长春电信 title=长春电信 alerts=someloss host=219.149.194.55 +++dianxin-lz menu=兰州电信 title=兰州电信 alerts=someloss host=202.100.64.68 +++dianxin-nc menu=南昌电信 title=南昌电信 alerts=someloss host=202.101.224.68 +++dianxin-xn menu=西宁电信 title=西宁电信 alerts=someloss host=202.100.138.68 +++dianxin-hk menu=海口电信 title=海口电信 alerts=someloss host=202.100.192.1 +++dianxin-fz menu=福州电信 title=福州电信 alerts=someloss host=218.85.157.99 +++dianxin-gy menu=贵阳电信 title=贵阳电信 alerts=someloss host=202.98.198.167 +++dianxin-km menu=昆明电信 title=昆明电信 alerts=someloss host=222.172.200.68 +++dianxin-xj menu=新疆电信 title=新疆电信 alerts=someloss host=61.128.114.133 +++dianxin-xz menu=西藏电信 title=西藏电信 alerts=someloss host=202.98.224.2 +++dianxin-heb menu=哈尔滨电信 title=哈尔滨电信 alerts=someloss host=219.150.32.132 +++dianxin-hhht menu=呼和浩特电信 title=呼和浩特电信 alerts=someloss host=121.56.12.12 ++liantong menu=联通网络监控 title=联通网络监控列表 host=/Other/liantong/liantong-bj/Other/liantong/liantong-sh/Other/liantong/liantong-gz/Other/liantong/liantong-sz/Other/liantong/liantong-tj/Other/liantong/liantong-sy/Other/liantong/liantong-xa/Other/liantong/liantong-jn/Other/liantong/liantong-qd/Other/liantong/liantong-cd/Other/liantong/liantong-ah/Other/liantong/liantong-wh/Other/liantong/liantong-zz/Other/liantong/liantong-cs/Other/liantong/liantong-nj/Other/liantong/liantong-hz/Other/liantong/liantong-xm/Other/liantong/liantong-nn/Other/liantong/liantong-nc/Other/liantong/liantong-ty/Other/liantong/liantong-xn/Other/liantong/liantong-gz/Other/liantong/liantong-fz/Other/liantong/liantong-lz/Other/liantong/liantong-km/Other/liantong/liantong-xj/Other/liantong/liantong-xz/Other/liantong/liantong-heb/Other/liantong/liantong-hhht +++liantong-bj menu=北京联通 title=北京联通 alerts=someloss host=202.106.196.253 +++liantong-sh menu=上海联通 title=上海联通 alerts=someloss host=210.22.70.253 +++liantong-gz menu=广州联通 title=广州联通 alerts=someloss host=221.4.66.66 +++liantong-sz menu=深圳联通 title=深圳联通 alerts=someloss host=210.21.196.6 +++liantong-tj menu=天津联通 title=天津联通 alerts=someloss host=202.99.96.1 +++liantong-sy menu=沈阳联通 title=沈阳联通 alerts=someloss host=202.96.75.1 +++liantong-xa menu=西安联通 title=西安联通 alerts=someloss host=221.11.1.67 +++liantong-jn menu=济南联通 title=济南联通 alerts=someloss host=202.102.152.3 +++liantong-qd menu=青岛联通 title=青岛联通 alerts=someloss host=202.102.128.68 +++liantong-cd menu=成都联通 title=成都联通 alerts=someloss host=119.6.6.6 +++liantong-ah menu=安徽联通 title=安徽联通 alerts=someloss host=218.104.78.2 +++liantong-wh menu=武汉联通 title=武汉联通 alerts=someloss host=218.104.111.122 +++liantong-zz menu=郑州联通 title=郑州联通 alerts=someloss host=218.29.122.70 +++liantong-cs menu=长沙联通 title=长沙联通 alerts=someloss host=58.20.127.238 +++liantong-nj menu=南京联通 title=南京联通 alerts=someloss host=221.6.4.66 +++liantong-hz menu=杭州联通 title=杭州联通 alerts=someloss host=221.12.31.58 +++liantong-xm menu=厦门联通 title=厦门联通 alerts=someloss host=218.104.128.106 +++liantong-nn menu=南宁联通 title=南宁联通 alerts=someloss host=221.7.136.68 +++liantong-nc menu=南昌联通 title=南昌联通 alerts=someloss host=220.248.192.10 +++liantong-ty menu=太原联通 title=太原联通 alerts=someloss host=202.99.192.66 +++liantong-xn menu=西宁联通 title=西宁联通 alerts=someloss host=221.207.12.130 +++liantong-gy menu=贵阳联通 title=贵阳联通 alerts=someloss host=221.13.30.242 +++liantong-fz menu=福州联通 title=福州联通 alerts=someloss host=58.22.96.6 +++liantong-lz menu=兰州联通 title=兰州联通 alerts=someloss host=221.7.34.1 +++liantong-km menu=昆明联通 title=昆明联通 alerts=someloss host=221.3.131.11 +++liantong-xj menu=新疆联通 title=新疆联通 alerts=someloss host=60.13.184.49 +++liantong-xz menu=西藏联通 title=西藏联通 alerts=someloss host=221.13.65.38 +++liantong-heb menu=哈尔滨联通 title=哈尔滨联通 alerts=someloss host=202.97.224.1 +++liantong-hhht menu=呼和浩特联通 title=呼和浩特联通 alerts=someloss host=202.99.224.67 ++yidong menu=移动网络监控 title=移动网络监控列表 host=/Other/yidong/yidong-bj/Other/yidong/yidong-sh/Other/yidong/yidong-gz/Other/yidong/yidong-sz/Other/yidong/yidong-tj/Other/yidong/yidong-sy/Other/yidong/yidong-xa/Other/yidong/yidong-jn/Other/yidong/yidong-qd/Other/yidong/yidong-cd/Other/yidong/yidong-hf/Other/yidong/yidong-wh/Other/yidong/yidong-zz/Other/yidong/yidong-cs/Other/yidong/yidong-nj/Other/yidong/yidong-nc/Other/yidong/yidong-gy/Other/yidong/yidong-fz/Other/yidong/yidong-lz/Other/yidong/yidong-km/Other/yidong/yidong-hz/Other/yidong/yidong-nn/Other/yidong/yidong-wlmq/Other/yidong/yidong-ls +++yidong-bj menu=北京移动 title=北京移动 alerts=someloss host=211.136.17.107 +++yidong-sh menu=上海移动 title=上海移动 alerts=someloss host=211.136.150.25 +++yidong-gz menu=广州移动 title=广州移动 alerts=someloss host=221.179.38.7 +++yidong-sz menu=深圳移动 title=深圳移动 alerts=someloss host=120.196.165.7 +++yidong-tj menu=天津移动 title=天津移动 alerts=someloss host=211.137.160.5 +++yidong-sy menu=沈阳移动 title=沈阳移动 alerts=someloss host=211.137.32.178 +++yidong-xa menu=西安移动 title=西安移动 alerts=someloss host=218.200.48.238 +++yidong-jn menu=济南移动 title=济南移动 alerts=someloss host=211.137.191.26 +++yidong-qd menu=青岛移动 title=青岛移动 alerts=someloss host=211.137.186.224 +++yidong-cd menu=成都移动 title=成都移动 alerts=someloss host=211.137.96.205 +++yidong-hf menu=合肥移动 title=合肥移动 alerts=someloss host=211.138.180.2 +++yidong-wh menu=武汉移动 title=武汉移动 alerts=someloss host=211.137.59.2 +++yidong-zz menu=郑州移动 title=郑州移动 alerts=someloss host=211.138.30.66 +++yidong-cs menu=长沙移动 title=长沙移动 alerts=someloss host=111.8.55.1 +++yidong-nj menu=南京移动 title=南京移动 alerts=someloss host=221.130.48.1 +++yidong-hz menu=杭州移动 title=杭州移动 alerts=someloss host=120.199.7.10 +++yidong-nn menu=南宁移动 title=南宁移动 alerts=someloss host=211.138.245.180 +++yidong-nc menu=南昌移动 title=南昌移动 alerts=someloss host=211.141.90.68 +++yidong-gy menu=贵阳移动 title=贵阳移动 alerts=someloss host=211.139.5.1 +++yidong-fz menu=福州移动 title=福州移动 alerts=someloss host=211.138.151.1 +++yidong-lz menu=兰州移动 title=兰州移动 alerts=someloss host=218.203.160.1 +++yidong-km menu=昆明移动 title=昆明移动 alerts=someloss host=211.139.29.1 +++yidong-wlmq menu=乌鲁木齐移动 title=乌鲁木齐移动 alerts=someloss host=218.202.152.131 +++yidong-ls menu=拉萨移动 title=拉萨移动 alerts=someloss host=211.139.73.35 9.分别启动smokeping和httpd。 /usr/local/smokeping/bin/smokeping ps-ef|grepsmoke hadoop2184819908011:20pts/100:00:00grepsmoke root17713110Sep27?00:00:38/usr/local/smokeping/bin/smokeping[FPing] /etc/init.d/httpdstart -ef|grephttpd hadoop2224519908011:21pts/100:00:00grephttpd root17715210Sep27?00:00:00/usr/sbin/httpd apache1771541771520Sep27?00:00:00/usr/sbin/httpd apache1771551771520Sep27?00:00:00/usr/sbin/httpd apache1771561771520Sep27?00:00:00/usr/sbin/httpd apache1771571771520Sep27?00:00:00/usr/sbin/httpd apache1771581771520Sep27?00:00:00/usr/sbin/httpd apache1771591771520Sep27?00:00:00/usr/sbin/httpd apache1771601771520Sep27?00:00:00/usr/sbin/httpd apache1771611771520Sep27?00:00:00/usr/sbin/httpd apache1773731771520Sep27?00:00:00/usr/sbin/httpd apache1773781771520Sep27?00:00:00/usr/sbin/httpd apache1797261771520Sep27?00:00:00/usr/sbin/httpd 10.让smokeping界面支持中文 安装字体 yum-yinstallwqy-zenhei-fonts.noarch 编辑smokeping的配置文件vim/usr/local/smokeping/etc/config 第50行添加 charset=utf-8#添加此行 编辑Graphs.pm这个文件vim/usr/local/smokeping/lib/Smokeping/Graphs.pm#第147行下边插入下边一行 '--fontTITLE:20:"WenQuanYiZenHeiMono"', 11.访问地址,看下是否可以出现smokeping页面。

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

利用ROS搭建应用基础套件

背景 SLB + ECS + RDS 是企业级应用的基础搭配,在小型应用场景下这三款产品成为了架构的核心组件。 基本结构如上图所示,创建一组ECS实例并挂在到SLB下面,然后创建一个ECS实例,同时把ECS的IP加入到访问白名单。作为应用方,您只需要根据业务类型和特点预估一下ECS的数量即可,其余的事情阿里云资源编排服务ROS可以帮您一键完成。 创建的资源包括 ALIYUN::ECS::InstanceGroup 创建一组相同配置的ECS. 注意:如果每台ECS的转发权重一样的话,可以采用本文的方式挂载到SLB,否则您可以参考手动的方式挂载并设置不同的权重值。 ALIYUN::SLB::LoadBalancer 创建一个负载均衡 ALIYUN::SLB::Listener 配置监听 ALIYUN::SLB::BackendServerAttachmen

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

在docker 中搭建gitlab环境

docker run --name gitlab -it -p 10022:22 -p 10080:80 -p 4433:443 \ --env 'GITLAB_SECRETS_DB_KEY_BASE=Rpwq35wjLJ5N6CrkvdXsqTDHsh6XG3QkhdtRTkt87fvLwzvlmtdNWMCwNjDj5Xk9' \ --env 'DB_HOST=192.168.1.58' --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=root' --env 'DB_PASS=admin' \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'REDIS_HOST=192.168.1.58' --env 'REDIS_PORT=6379' \ --volume /data/gitlab/gitlab:/home/git/data \ docker.io/sameersbn/gitlab docker run --name gitlab-mysql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=admin' \ --volume /data/gitlab/mysql:/var/lib/mysql \ docker.io/sameersbn/mysql docker run --name gitlab-redis -d \ --volume /data/gitlab/redis:/var/lib/redis \ docker.io/sameersbn/redis docker run --name gitlab -d \ --link gitlab-mysql:mysql --link gitlab-redis:redisio \ --publish 10022:22 --publish 10080:80 \ --env 'GITLAB_PORT=10080' --env 'GITLAB_HOST=192.168.1.58' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ docker.io/sameersbn/gitlab docker run --name gitlab-ci -d \ --link gitlab-mysql:mysql --link gitlab-ci-redis:redisio \ --publish 10081:80 \ --env 'GITLAB_CI_PORT=10081' --env 'GITLAB_CI_HOST=192.168.1.58' --env 'GITLAB_URL=http://192.168.1.58:10080' \ --env 'GITLAB_APP_ID=xxx' --env 'GITLAB_APP_SECRET=yyy' \ --volume /srv/docker/gitlab-ci/gitlab-ci:/home/git/gitlab_ci/data \ quay.io/sameersbn/gitlab-ci docker run --name gitlab-ci-runner -it --rm \ -v /opt/gitlab-ci-runner:/home/gitlab_ci_runner/data \ sameersbn/gitlab-ci-runner docker run --name gitlab-ci-multi-runner -d --restart=always \ --volume /opt/gitlab-ci-multi-runner:/home/gitlab_ci_multi_runner/data \ --env='CI_SERVER_URL=http://192.168.1.58:10080/ci' --env='RUNNER_TOKEN=31d563f789129ea1d35bd0b92a0665' \ --env='RUNNER_DESCRIPTION=myrunner' --env='RUNNER_EXECUTOR=shell' \ docker.io/sameersbn/gitlab-ci-multi-runner username: root password: 5iveL!fe docker run --name mysql -p 192.168.1.58:3306:3306 -d \ -e 'DB_REMOTE_ROOT_NAME=root' -e 'DB_REMOTE_ROOT_PASS=admin' \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=admin' \ docker.io/sameersbn/mysql docker run --name gitlab -d -p 10022:22 -p 10080:80 -p 4433:443 \ --env 'GITLAB_SECRETS_DB_KEY_BASE=Rpwq35wjLJ5N6CrkvdXsqTDHsh6XG3QkhdtRTkt87fvLwzvlmtdNWMCwNjDj5Xk9' \ --env 'DB_HOST=192.168.1.58' --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=root' --env 'DB_PASS=admin' --env 'DB_PORT=3306' \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'REDIS_HOST=192.168.1.58' --env 'REDIS_PORT=6379' \ --volume /data/gitlab/gitlab:/home/git/data \ docker.io/sameersbn/gitlab docker run --name gitlab -it -p 10022:22 -p 10080:80 -p 4433:443 \ --env 'GITLAB_SECRETS_DB_KEY_BASE=Rpwq35wjLJ5N6CrkvdXsqTDHsh6XG3QkhdtRTkt87fvLwzvlmtdNWMCwNjDj5Xk9' \ --env 'DB_HOST=192.168.1.58' --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=root' --env 'DB_PASS=admin' --evn 'DB_PORT=3306' \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'REDIS_HOST=192.168.1.58' --env 'REDIS_PORT=6379' \ --volume /data/gitlab/gitlab:/home/git/data \ docker.io/sameersbn/gitlab /bin/bash GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;

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

Hadoop 2.6.0集群搭建

yum install gcc yum install gcc-c++ yum install make yum install autoconfautomake libtool cmake yum install ncurses-devel yum install openssl-devel groupadd hadoop 添加一个组 useradd hadoop -g hadoop 添加用户 安装protoc(需用root用户) 1 tar -xvf protobuf-2.5.0.tar.bz2 2 cd protobuf-2.5.0 3 ./configure --prefix=/opt/protoc/ 4 make && make install 编译hadoop mvn clean package -Pdist,native -DskipTests -Dtar 编译完的hadoop在 /home/hadoop/ocdc/hadoop-2.6.0-src/hadoop-dist/target 路径下 配置hosts文件 10.1.245.244 master 10.1.245.243 slave1 命令行输入 hostname master 免密码登录: 执行命令生成密钥: ssh-keygen -t rsa -P "" 进入文件夹cd .ssh (进入文件夹后可以执行ls -a 查看文件) 将生成的公钥id_rsa.pub 内容追加到authorized_keys(执行命令:cat id_rsa.pub >> authorized_keys) ---------------------------(core-site.xml)------------------------------ <configuration> <!--指定hdfs的nameservice为ns1--> <property> <name>fs.defaultFS</name> <value>hdfs://master</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <!--指定hadoop数据存放目录--> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/ocdc/hadoop-2.6.0/tmp</value> <description>Abasefor other temporary directories.</description> </property> <property> <name>hadoop.proxyuser.spark.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.spark.groups</name> <value>*</value> </property> </configuration> <!--指定zookeeper地址--> <property> <name>ha.zookeeper.quorum</name> <value>h4:2181,h5:2181,h6:2181</value> </property> </configuration> -------------------------------(hdfs-site.xml )----------------------------------- <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/ocdc/hadoop-2.6.0/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/ocdc/hadoop-2.6.0/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.nameservices</name> <value>ns1</value> </property> <!-- ns1下面有两个NameNode,分别是nn1,nn2 --> <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> </configuration> ----------------------------------------(yarn-site.xml)-------------------------- <configuration> <!-- Site specific YARN configuration properties --> <!--指定nodemanager启动时加载server的方式为shuffle server --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>16384</value> </property> </configuration> <!--指定resourcemanager地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>h3</value> </property> -----------------------------(mapred-site.xml)------------------------------- <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>16384</value> </property> </configuration>

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

【博客大赛】面试官在“逗”你系列:到底应该怎么爬楼梯?!

直奔主题 算法题是在面试过程中考察候选人逻辑思维能力、手写代码能力的一种方式,因为有一句古话说的好:“说一千道一万,不如写段代码看一看”。 今天我们就来个单刀直入,直奔主题,从一个真实面试题到底怎么爬楼梯来聊一聊算法中的动态规划 。 面试真题 小明家有一楼梯共有10级台阶,每次可以爬1级或2级,问小明爬到第10级台阶,一共有多少种走法? 为什么是“小明”呢?这是个奇怪的问题~ 真题分析 很多同学在第一次遇到这个爬楼梯的问题可能会比较懵,不知道该如何来解决。我们首先需要做的就是寻找这个问题的关键点:每次只能爬1级或2级。 递归思想 小明每次只能爬1级或2级,那么对于爬到第10级台阶来说,最后一次操作为走1级(此时处于第9级台阶上)或走2级(此时处于第8级台阶上)。假定我们有个表达式f可以来计算到达某阶台阶的走法,那么对于第10阶来说,这个表达式就应该为:f(10) = f(9) + f(8)。 对于这个表达式,是不是有种瞬间回到那初、高中的年代~ 按如上规则,再次考虑,爬到第9级台阶时,最后一次操作为走1级(此时处于第8级台阶上)或走2级(此时处于第7级台阶上),此处的表达式为:f(9) = f(8) + f(7)。 ...... 依次处理,当爬到第3级台阶时,计算的表达式就是f(3) = f(2) + f(1)。 那爬到第2级台阶有几种方式呢:每次走1级或者一次走2级,也就是一共有2种走法,f(2) = 2。 爬到第1级台阶的方式肯定只有一种:走1级,f(1) = 1。 按我们的思考逻辑,相关代码如下: /** * @method climbStairs * @description 爬楼梯 * @param {number} n 楼梯台阶数 * @return {number} 一共有多少种走法 */ function climbStairs (n) { if (n === 1) { return 1 }; if (n === 2) { return 2 }; let num = 0; num = climbStairs(n - 1) + climbStairs(n - 2); return num; } // 调用函数,输出结果 let num = climbStairs(10); console.log(num); // 89 Congratulations~我们已经完成啦,得到了正确的结果。 就在你满脸微笑、志得意满的向面试官讲解思路的时候,面试官十有八九会一副老狐狸得逞的样子,继续问你,假如n的值比较大的,如40之类的,上面定义的climbStairs的执行性能如何。 我们来看下执行的性能: 测试代码如下: console.time(); let num = climbStairs(40); console.log(num); console.timeEnd() 我的mac配置如下: MacBook Pro 处理器:2.5 GHz 四核Intel Core i7 内存: 16GB 连续执行三次数据如下: 序号 结果 执行时间 1 165580141 811.077ms 2 165580141 817.025ms 3 165580141 814.803ms 注:在执行过程中有卡顿,不是瞬间输出~,如果执行的是climbStairs(100),你应该会瞬间听到风扇启动的呜呜声~ 递归思想优化 在上面代码climbStairs的基础上我们来进行优化处理。我们仔细分析代码的执行流程,就会发现有很多重复计算的地方,比如说f(5)就会在f(6-1)、f(7-2)时被重复计算,这就浪费了时间和性能。 那我们就选择使用空间换时间的策略,设置对象numbers,保存爬到某级台阶的结果,避免重复计算,numbers对象的结果如下: let numbers = { 1: 1, 2: 2 } 优化后代码如下: /** * @method climbStairs * @description 爬楼梯 * @param {number} n 楼梯台阶数 * @return {number} 一共有多少种走法 */ function climbStairs (n) { // 存储计算的结果,key(台阶) : num(走法) let numbers = { 1: 1, 2: 2 }; let tmpClimbStairs = function (n) { // 已存在的数据,直接返回,不再重新计算 if (numbers[n]) { return numbers[n]; } // 不存在的数据,进行计算 let num = tmpClimbStairs(n - 1) + tmpClimbStairs(n - 2); // 计算完成后,存放如numbers中,下次可以直接使用 numbers[n] = num; // 返回结果 return num; } // 计算结果 let num = tmpClimbStairs(n); // 返回结果 return num; } 相同环境下,我们再来执行测试,连续执行三次数据如下: 序号 结果 执行时间 1 165580141 7.100ms 2 165580141 7.478ms 3 165580141 6.260ms 消耗的时间竟然相差百倍之多,It's amazing!说明我们使用空间换时间的策略是正确的。 执行结果几乎是瞬间输出的,执行如丝袜奶茶般顺滑~此时此刻你可以再次执行climbStairs(100)来体验下绝对的性能飙升! 这道面试题处理成这样已经是非常OK的了,但是如果你已经感到彻底满足,为自己的聪明才智感到骄傲了,你就会听到面试官可爱(恨)的声音传来:”还有别的方法或性能更好的方法来实现吗?“ 是不是心中一口老血想喷出来~面试官是不是故意的,是不是在针对我~ 哈哈,不慌不慌,小场面~ 递归与递推 递归与递推是两种不同的看待、分析问题的思路。 递归:自顶向下的处理逻辑,有相应的临界点(终止递归的点); 递推:自底向上的处理逻辑,到达目标点结束。 递推思想 我们重新使用递推的方式再来看这个问题。 爬到第1级台阶,有1种方式。 f(1) = 1; 爬到第2级台阶,有2种方式:每次1级或1次2级。f(2) = 2; 爬到第3级台阶的情况呢? 不要忘了我们之前分析的关键点:每次只能1级或2级,对于第3级台阶来说,可以是从第1级台阶出发也可以是从第2级台阶出发,所以f(3) = f(2) + f(1) 同理可得爬到第4级台阶的情况,f(4) = f(3) + f(2) 我们得出一个结论:对于第N(N > 2)级台阶,其表达式为f(N) = f(N-1) + f(N-2)。那么我们在结算的过程中,每次都记录下f(N-1)和f(N-2)的值,逐级迁移这个值,就可以得到f(N)了。 现在climbStairs代码如下: /** * @method climbStairs * @description 爬楼梯 * @param {number} n 楼梯台阶数 * @return {number} 一共有多少种走法 */ function climbStair (n) { // 通过观察,我们可只第1级和第2级都是返回对应的n if (n <= 2) { return n; } else { // 对于n > 2的情况 let i = 1; // 初始存放第1级台阶的走法,对应的是f(N-2) let j = 2; // 初始存放第2级台阶的走法,对应的是f(N-1); // 定义走法num let num; // 从第3级开始,执行循环操作 for (let k = 3; k <= n; k++) { // f(N) = f(N-1) + f(N-2) num = i + j; // 同时移动 // 将f(N-1)的值给f(N-2) i = j; // 将当前值给f(N-1) j = num; } // 返回结果 return num; } } 这一次我们直接在时间复杂度上降低了,变成了O(N),执行起来更加是和那啥一样,流畅、顺滑~ 我们来看下测试效果,连续执行三次测试结果如下: 序号 结果 执行时间 1 165580141 6.570ms 2 165580141 6.647ms 3 165580141 6.658ms 相对于递归的实现方式,递推的实现从时间复杂度上更低,执行也会更高效~ 此时此刻,这个爬楼梯的问题终于是回答圆满了,这个时候面试官看你就会像丈母娘看女婿一样,怎么看怎么可爱。 动态规划的算法问题有很多种不同的形式,爬楼梯是其中的一种。在这里胡哥要给大家留一道面试题啦,看看大家对动态规划是不是有了深刻的理解。 面试真题如下: 你是一个有信仰的强盗,有一排房屋等待你去抢劫,在抢劫中不能相邻的房屋不能抢,只能间隔一个或多个房屋进行抢劫,房屋中钱财都是非负整数,数据格式如下:[3, 4, 5, 2, 1, 1],请计算出你能抢到的最大金额是多少。 这个强盗相当有信仰,竟然不都抢走~ 欢迎各位小伙伴留言,谈谈你对动态规划的理解,留下这道面试题的答案,一起来探讨交流~ 后记 以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得点赞、收藏呀,关注胡哥有话说,学习前端不迷路,欢迎多多留言交流... 胡哥有话说,专注于大前端技术领域,分享前端系统架构,框架实现原理,最新最高效的技术实践!

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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等操作系统。

用户登录
用户注册