操作系统

linux/scp命令报“bash: scp: command not found lost connection”错误的解决办法

这两天接到的任务是给JAVA开发项目组部署【JAVA+MySQL主从+Redis主从】运行环境。部署过程中大问题倒没有,小问题却不少,因此也涨了不少经验值。后续有时间我会一一整理记录下来,沉淀而不忘分享。 今天,装完一台redis,并配置好redis.conf后,想偷懒直接用scp传到另一台redis,省去全部重新编辑的麻烦。结果一执行就出现下面这个错误: 所有机器我都是最小化安装,所以很多组件没装也是情理之中,所以用yum装一下scp: 装完后,继续执行之前的命令,结果出现如下错误: 我擦,这就诡异了!明明装了为毛提示不存在呢? 而且还提示输入密码了,用whereis也能找到scp,没办法从man中找到一个DEBUG参数 -v,于是如下增加 -v 参数执行试试: 原来是因为目标主机也没装scp,倒是我大意了!登陆后再次执行如下命令安装scp: 回到之前的服务器上,执行最初的命令,果然毫无意外成功了: 网站搜索这个故障,大部分经验都是告知要安装scp,然后给出一个 yum 在线安装 scp 的命令。实际上,明明已经提示要输入密码了,说明 scp 是正常安装的!还继续报找不到命令,我们就只能从 scp 的执行过程来分析了,因此就借助到了scp的debug参数(-v),很清楚的看到了整个执行过程,从而得知真正的原因是对方主机没有安装scp,而且还可以清楚的看到 scp 的工作流程。 中午时间有限,就写这么多了,希望遇到这个问题的人,看到此文能少走点弯路。
阅读全文
Redhat设置NFS挂载的简单步骤 操作系统

Redhat设置NFS挂载的简单步骤

初识nfs还是在测试lvs负载均衡的时候,为了保证代码的一致性,将一台Realserver作为nfs服务器,而其他Realserver均以nfs将代码挂载过来。这样就保证了代码的一致性,但也是由很大隐患的,一旦那台Realserver宕机,那就全军覆没了...好了,废话不多说,进入nfs挂载简单步骤。 一、安装nfs 一般redhat是默认安装了nfs服务的,如果非默认安装且取消勾选nfs的话,需要挂载iso或下载安装包手动安装,就几个rpm包,就不多说了。 二、配置/etc/exports nfs允许挂载的目录及权限需在文件/etc/exports中进行定义。例如,我们要将代码所在目录/www/code共享出来,那么我们需要编辑/etc/exports文件,追加一行: 其中: /www/code是要共享的目录; * 代表允许所有的网络段访问(仅测试中使用,实际使用应该做严格的IP限制); rw开启共享目录的可读写权限; sync是资料同步写入内存和硬盘; no_root_squash是客户端分享目录使用者的权限,如果客户端使用root,那对于该共享目录而言,客户端就有root权限; 其他更多参数说明: 三、启动nfs服务 在启动nfs之前需要先启动portmap服务,否则如下报错: 正确方法先启动portmap再启动nfs,如下: 或 四、在客户端主机上挂载共享目录 1、挂载之前同样需要先启动portmap服务(同上); 2、在客户端使用showmount -e 查看nfs主机共享情况: 3、在客户端建立code文件夹(名称需相同,路径可以不同),并使用mount挂载命令: 注意事项:千万不要学博主,测试时误使用了 mount -t nfs 192.168.1.100:/www/code  /www/,导致原先/www目录内容全部被卸下,就算重新mount -o loop 也是很麻烦的!所以强烈建议路径保持一致! 4、若无报错,则可使用df -h 查看到挂载情况: 5、若是需要长期使用,则可以设置开机自动挂载,将相关服务设置为自启动,并将挂载命令也加入开机启动即可(略) 五、在客户端卸载已挂载的目录 1、常规卸载命令: 2、有时因为nfs主机或网络故障,会出现常规卸载提示device is busy的提示,此时强制卸载命令如下: 或 3、上述卸载命令均无法生效时,请继续往下看: 以下摘自网络: fuser通常被用在诊断系统的“resource busy”问题,通常是在你希望umount指定的挂载点得时候遇到。 如果你希望kill所有正在使用某一指定的file, file system or sockets的进程的时候,你可以使用-k 选项。 格式为: $ fuser -m -v  (nfs挂载点) 回车执行后得到的结果依次是:用户 进程号 权限 命令 此命令可以查看到访问此设备的所有进程,停止进程后umount. 如果添加参数 -k则可以一次性将所有当前访问nfs共享盘阵的进程停止 也可以加-i 打开交互显示,以便用户确认 或者用fuser命令: #fuser -v -m 挂载点 即可查处 用户 PID等,KILL掉该进程后再umount. 或者 #umount -l 挂载点 选项 –l 并不是马上umount,而是在该目录空闲后再umount.还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的NFS服务安全非常放心了.   好了,以上就是redhat下的简单设置,也是博主自己用的步骤,适合初次使用nfs的筒子参考,希望对你有所帮助!
阅读全文
LVS+Keepalived负载均衡主备&双主架构全攻略 操作系统

LVS+Keepalived负载均衡主备&双主架构全攻略

LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR); 十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。 Keepalvied Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现 一、LVS+Keepalived负载均衡主备架构 I. 网站负载均衡拓朴图 (略) IP信息清单: 名称 IP LVS-DR-Master 192.168.2.98 LVS-DR-Backup 192.168.2.99 LVS-DR-VIP 192.168.2.100 Realserver01 192.168.2.101 Realserver02 192.168.2.102 Realserver03 192.168.2.103 Realserver04 192.168.2.104 II.安装ipvsadm和keepalived软件包 ipvsadm: http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz keepalived:http://www.keepalived.org/software/keepalived-1.1.15.tar.gz 下载后建议统一放置在/usr/local/src/lvs III. 配置Realserver脚本 在4台Realserver主机上建立如下脚本,然后执行 IV. 配置keepalived实现负载均衡和和高可用性 1.在LVS-DR-Master主机上编辑keepalived的配置文件 : vim /etc/keepalived/keepalived.conf     2.编辑LVS-DR-Backup上的keepalived配置文件(可拷贝Master上的),然后如下修改: 其余保持不变即可。 V. 启动LVS Realserver脚本启动之后不需要操作,然后依次启动LVS主机上的keepalived服务即可: service keepalived start 二、LVS+Keepalived负载均衡双主互备架构 IP信息清单: 名称 IP LVS-DR-Master 192.168.2.98 LVS-DR-Backup 192.168.2.99 LVS-DR-VIP1 192.168.2.100 LVS-DR-VIP2 192.168.2.105 Realserver01 192.168.2.101 Realserver02 192.168.2.102 Realserver03 192.168.2.103 Realserver04 192.168.2.104 双主互备方案需要2个VIP,分别绑定到两台LVS主机上,然后修改keepalived.conf让两台LVS互相作为备机,代码稍作修改即可: 说明:以上则为一台LVS主机的keepalived配置,由于篇幅过长,就不另提供相应的互备配置了,其实很简单,就是一边为MARSTER时,对应的互备配置就是BACKUP,然后其他对应位置均做修改即可,通过2个VIP让2台LVS主机均处于工作状态,互为主备结构,提高资源利用率! 最佳建议:将域名同时绑定到2个VIP,然后轮询解析,实现均衡流量的目的! 由于篇幅过长,有的地方可能没写到位,若涧客们有任何疑问请留言~
阅读全文
抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面 操作系统

抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面

写在前面:当一个台WEB主机(JAVA平台)上有多个站点时,很可能因为一个站点项目出现死锁之类的BUG而导致所有站点挂掉!最烦的就是因为站点过多,在日志无法具体指向的时候,你根本无法确定那个站点出现BUG,从而你也没法推给开发人员解决。                    下面,就介绍一个抓取高占用CPU的线程的简单方法: 运行top命令取得JAVA线程号(PID),假如是2068; 运行jstack + pid 命令导出JAVA线程信息到result文件,命令行为 jstack 2068>result 运行top -p 2068 -H 查看CPU占用排名情况,并记录PID; 运行 ./jtgrep +PID 找到线程头文字(PID为第3步获取) ; 使用vi/vim打开result,查询头文字就能找到相应线程。 下面为jtgrep代码:   写在后面:此方法无须安装任何软件,能够快速找出占用CPU的JAVA线程,是发现同类问题的首选办法,但很多时候你可能找到的是VM threads线程或者GC线程。。。无法真正找到毒瘤,那就只能另寻他法了。
阅读全文
详解Linux运维工程师必备技能 操作系统

详解Linux运维工程师必备技能

本人是Linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧。 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。 我就大概列出这几方面,这样入门就基本没问题了。 Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一下SUSE,有些公司也喜欢用,例如我公司 。。。 工具如下: 1、Linux系统基础 这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥linux基础篇,至少要掌握这书60%内容,没必须全部掌握,但基本命令总得会吧。 2、网络服务 服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行,LAMP和LNMP是必须要熟练,我所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是WEB服务器,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行,至少有些公司还会用tomcat,这个也最好学一下。其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。 这上面2点只是基础,也是必要条件,不能说是工具,以下才是真正的要掌握的工具。 3、shell脚本和另一个脚本语言 shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本吧,这是最最最基本了,别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义,而另一个脚本语言是可选的,一般是3P,即python, perl和php,php就不需要考虑了,除非你要做开发,我个人建议学python会比较好,难实现自动化运维,perl是文本处理很强大,反正这两个学一个就行了。 4、sed和awk工具 必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤WEB内容时十分有用,不过在学shell的同时一般会经常结合用到的,所以学第3点就会顺便学第4点。 5、文本处理命令 sort, tr, cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。 6、数据库 首选mysql,别问我为什么不学sqlserver和oracle,因为Linux用得最多绝对是mysql,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。 7、防火墙 不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而FILTER表用得最多,反正不学就肯定不合格。 8、监控工具 十分十分重要,我个人建议,最好学这3个,cacti,nagios,zabbix,企业用得最多应该是 nagios 和 zabbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。 9、集群和热备 这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰,集群工具有很多,最好学是LVS,这是必学,最好也学学nginx集群,反向代理,还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的,mysql热备也要学,就是主从复制,这个别告诉我容易,其实不容易的,要学懂整个流程一点也不容易,只照着做根本没意思。 10、数据备份 不学不行,工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump, rsync等,最好多了解一下。 算了,说到这10点已经够你受了,应该可以入门了,因为有些技术会比较难学,例如apache和nginx中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧,估计要学熟至少3个月不止,就脚本那部分已经让你很吃力了,我建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。 以上就是踏入Linux运维工程师需要掌握的工具,其实还有很多工具要掌握的,但你在学习环境中是很难学到,最后我再提醒一下,这里所指的工具相当于技能,而不是像windows或ubuntu那些图形化工具,那些工具没用的,还有,学Linux就别装图形界面,这样虚拟机就不用吃太多内存,而且绝对不建议在真机上装Linux,根本达不到学习效果。
阅读全文